Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

un macro excel per studiare giapponese

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

un macro excel per studiare giapponese

Postdi stefano_birdofprey » 27/01/12 01:11

Ebbene si, vediamo un po' se riesco ad usare excel per ripassare un po' di regole grammaticali e persino allenarmi a memorizzare i kanji.
In breve ho bisogno di una macro che selezioni un paio di parole (in italiano) a caso ed una regola grammaticale della lingua giapponese (in entrambi i casi si deve poter indicare la lezione o il range di lezioni su cui ci si vuole "allenare"), proponendomi quindi di scrivere poi su un foglio (questa volta cartaceo) una frase in giapponese che contenga quelle parole e che usi quella particolare regola grammaticale.

Ecco quello che ho pensato di fare per preparare il tutto:
- in un foglio, che ho chiamato "parole", ho creato una serie di colonne "Lezione 1", "Lezione 2", etc
- in ognuna di queste colonne ho inserito una serie di parole in italiano, la cui traduzione in giapponese contiene i kanji imparati in quella lezione (es, nella lezione 1 ci sono i numeri da 1 a 10)
- in un altro foglio, che ho chiamato "grammatica", ho creato anche qui una serie di colonne "Lezione 1", "Lezione 2", etc
- in queste colonne ho inserito invece un esempio della struttura grammaticale spiegata in quella lezione (es. nella lezione 1 ci sono le forme base tipo "io sono uno studente" e cose del genere)
- le colonne di ogni foglio possono avere un numero di righe diverso (es. nel foglio "parole", la lez 1 ha 10 parole, la lez 2 ne ha 12, la lez 3 ne ha 8 e così via)

Quello di cui ho bisogno (e che non riesco a fare):
- in un altro foglio, ci saranno due aree, una dove viene chiesto di impostare una serie di parametri ed un'altra area pre impostata per poter essere stampata con una serie di righe che dicono qualcosa del tipo "crea una frase in giapponese usando queste parole (parola1), (parola2), ... e questa regola grammaticale". Vi possono essere più frasi, in modo che poi il foglio stampato contenga -che so- una decina di questi esercizi randomici. In questo modo posso stampare più pagine, ottenendo combinazioni sempre nuove
- nella parte di input, viene chiesto di immettere i valori min/max relativi sia alle lezioni sulle parole e sia quelli sulle regole grammaticali. Da notare che il numero di lezioni relative alle parole non necessariamente è quello delle regole grammaticali (si usano libri di testo diversi... quindi magari da una parte alla fine ci saranno 15 lezioni e dall'altra 20). in questo modo posso volermi allenare solo su una lezione, in questo caso i valori min e max coincideranno, oppure allenarmi sulle lezioni da 1 a 5 oppure solo sulle lezioni 6 e 7. Direi che è inutile pensare di usare valori non contigui. Quindi si tratta sempre di un range, che può comprendere o tutte le lezioni (bisognerà verificare che il valore massimo impostato per le parole e quello delle regole non sia superiore all'effettivo numero di colonne corrispondente alle lezioni nei fogli "parole" e "grammatica")
- la macro deve andare a pescare una o più parole (possibilmente non ripetute) nel range di colonne relativo alle lezioni selezionate e lo stesso per quanto riguarda le regole grammaticali.
- la macro da sviluppare, presenta una serie di X parole (altro parametro potenzialmente variabile, ma se si vuole fare fisso direi che 2 è un compromesso accettabile) e Y regole (se è troppo complesso rendere anche questo variabile, direi di fare una sola regola). L'idea è di organizzare una tabella da stampare in modo da avere un foglio A4 in orizzontale che contenga una serie di "esercizi" da svolgere in base alle impostazioni selezionate sulle lezioni

Che ne dite? Pensate si possa realizzare? Io non ho le capacità per programmare una Macro che faccia quello che vorrei... mi date una mano?
arigatou!! :)
stefano_birdofprey
Utente Junior
 
Post: 13
Iscritto il: 27/01/12 00:45

Sponsor
 

Re: un macro excel per studiare giapponese

Postdi Flash30005 » 27/01/12 06:09

Ciao Stefano_birdofprey e benvenuto nel Forum

Potresti inviare uno stralcio della cartella di excel?
(non necessariamente con tutte le lezioni ma almeno un paio isa nel foglio1 sia nel foglio2)
nonché un esempio di compilazione del foglio3 di output

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: un macro excel per studiare giapponese

Postdi stefano_birdofprey » 27/01/12 11:31

uff... non mi fa inviare i link perchè dice che sono ancora un pivellino... :(
stefano_birdofprey
Utente Junior
 
Post: 13
Iscritto il: 27/01/12 00:45

Re: un macro excel per studiare giapponese

Postdi stefano_birdofprey » 27/01/12 11:31

Flash30005 ha scritto:Ciao Stefano_birdofprey e benvenuto nel Forum

ciao

grazie per il benvenuto, comunqu! :)
stefano_birdofprey
Utente Junior
 
Post: 13
Iscritto il: 27/01/12 00:45

Re: un macro excel per studiare giapponese

Postdi stefano_birdofprey » 27/01/12 11:35

stefano_birdofprey
Utente Junior
 
Post: 13
Iscritto il: 27/01/12 00:45

Re: un macro excel per studiare giapponese

Postdi Flash30005 » 28/01/12 12:31

Ci sono delle cose che dovrei chiarire prima di procedere alla realizzazione della macro
Partendo dal prospetto Foglio1
Vorresti
1) selezionare le parole (casuali) della lezione 1 alla lezione 1 (possibilità di aumentare a n lezioni)
2) Selezionare forme grammaticali dalla lezione 3 alla lezione 5 (variabili intrambi)
3) estrarre da 3 a 6 parole max
4) Numero di forme grammaticali da estrarre 1 (variabile)
Nella seconda area ci sono 5 moduli identici
prendiamo ad esempio il primo modulo
alla riga 13 c'è scritto parola1, parola2, parola3...
suppongo vadano inserite le N. parole estratte al punto 3 dal foglio "parole" (?)
e nella riga 15 (cella unita) le forme grammaticali prelevate dal foglio "Grammatica" del punto 4 (forma grammaticale nel range lezioni 3:5 previste al punto 2) (?)
Le forme grammaticali scelte saranno inserite nell'unica cella unita alla riga 15 e non separate nelle singole colonne come prevede la testata in "forma grammaticale1" "forma grammaticale2" "forma grammaticale3"
Nella cella unita alla riga 16 (Furigana:) cosa ci va scritto?
Inoltre devono essere riempiti tutti e 5 i moduli?

Fai sapere

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: un macro excel per studiare giapponese

Postdi Flash30005 » 28/01/12 23:58

Non ho ricevuto risposta al mio post e ho fatto di testa mia....
In un modulo inserisci questo codice
Codice: Seleziona tutto
Sub Compila()
Dim ws1, ws2, ws3 As Worksheet
Set ws1 = Worksheets("Modello")
Set ws2 = Worksheets("Parole")
Set ws3 = Worksheets("Grammatica")
Dim VettP(30) As String
Dim VettF(15) As String
ColPI = ws1.[F2]
ColPF = ws1.[H2]
If ws1.[H2] < ws1.[F2] Then
MsgBox "Numero Lezione Dalla > del Numero Lezione Alla"
ws1.[H2]
End If
ColFI = ws1.[F4]
ColFF = ws1.[H4]
NP = ws1.[F6]
NF = ws1.[F8]
NS = 0
NSF = 0
For NV = 1 To 30
VettP(NV) = ""
Next NV
For RP = 13 To 37 Step 6
    ws1.Range(Cells(RP, 4), ws1.Cells(RP + 1, 9)).ClearContents
For NT = 1 To NP
Ritenta:
    ColR = Int(Rnd() * ColPF) + 1
    If ColR < ColPI Then GoTo Ritenta
    UR2 = ws2.Cells(Rows.Count, ColR).End(xlUp).Row
    Riga = Int(Rnd() * UR2) + 1
    If Riga = 1 Then GoTo Ritenta
    StrP = ws2.Cells(Riga, ColR).Value
    For PT = 1 To 30
        'If VettP(PT) = StrP Then GoTo Ritenta
        If VettP(PT) = "" Then
            VettP(PT) = StrP
            GoTo SaltaPT
        End If
    Next PT
SaltaPT:
Next NT
Application.EnableEvents = False
For NT = 1 To NP
    NS = NS + 1
    ws1.Cells(RP, NT + 3).Value = VettP(NS)
Next NT
Application.EnableEvents = True
For NTF = 1 To NF
RitentaF:
    ColF = Int(Rnd() * ColFF) + 1
    If ColF < ColFI Then GoTo RitentaF
    UR3 = ws3.Cells(Rows.Count, ColF).End(xlUp).Row
    RigaF = Int(Rnd() * UR3) + 1
    If RigaF = 1 Then GoTo RitentaF
    StrF = ws3.Cells(RigaF, ColF).Value
    If StrF = "" Then GoTo RitentaF
    For PTF = 1 To 15
        'If VettF(PTF) = StrF Then GoTo RitentaF
        If VettF(PTF) = "" Then
            VettF(PTF) = StrF
            GoTo SaltaFT
        End If
    Next PTF
SaltaFT:
Next NTF
Application.EnableEvents = False
For NCF = 1 To NF
    NSF = NSF + 1
    ws1.Cells(RP + 1, 2 * NCF + 2).Value = VettF(NSF)
Next NCF
Application.EnableEvents = True

Next RP
End Sub


Nel Vba del Foglio1 che ho ridenominato "Modello" (cambia anche tu il nome al foglio1)
Inserisci questo codice:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "F2,H2,F4,H4,F6,F8"
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
Application.EnableEvents = False
If [H2] < [F2] Then
MsgBox "Numero Lezione Dalla > del Numero Lezione Alla", vbCritical
[H2] = [F2]
[H2].Select
End If
If [H4] < [F4] Then
MsgBox "Numero Lezione Dalla > del Numero Lezione Alla", vbCritical
[H4] = [F4]
[H4].Select
End If
Application.EnableEvents = True
End If
End Sub


Inserisci un pulsante sul foglio "Modello" che avvia la macro "Compila"

Allego anche il file nel quale ho apportato qualche modifica al pannello

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: un macro excel per studiare giapponese

Postdi stefano_birdofprey » 29/01/12 13:39

Flash30005 ha scritto:Ci sono delle cose che dovrei chiarire prima di procedere alla realizzazione della macro
Partendo dal prospetto Foglio1
Vorresti
1) selezionare le parole (casuali) della lezione 1 alla lezione 1 (possibilità di aumentare a n lezioni)
2) Selezionare forme grammaticali dalla lezione 3 alla lezione 5 (variabili intrambi)
3) estrarre da 3 a 6 parole max
4) Numero di forme grammaticali da estrarre 1 (variabile)
Nella seconda area ci sono 5 moduli identici
prendiamo ad esempio il primo modulo
alla riga 13 c'è scritto parola1, parola2, parola3...
suppongo vadano inserite le N. parole estratte al punto 3 dal foglio "parole" (?)
e nella riga 15 (cella unita) le forme grammaticali prelevate dal foglio "Grammatica" del punto 4 (forma grammaticale nel range lezioni 3:5 previste al punto 2) (?)
Le forme grammaticali scelte saranno inserite nell'unica cella unita alla riga 15 e non separate nelle singole colonne come prevede la testata in "forma grammaticale1" "forma grammaticale2" "forma grammaticale3"
Nella cella unita alla riga 16 (Furigana:) cosa ci va scritto?
Inoltre devono essere riempiti tutti e 5 i moduli?

Fai sapere

Ciao


scusate per il ritardo nelle risposte ma ho avuto un paio di giorni incasinatissimi e riesco a leggere il forum solo adesso...

in effetti le forme grammaticali vanno inserite in celle separate. E' stata una mia distrazione unire le celle, perchè inizialmente pensavo alla possibilità di usare solo una forma grammaticale alla volta (credo comunque che sia difficile inserire in una stessa frase troppe forme grammaticali, quindi una o due sono in effetti il massimo possibile).
Il furigana è la "traduzione" con gli alfabeti fonetici giapponesi dei kanji... serve per allenarsi a ricordarsi come un determinato kanji si pronuncia a seconda della parola in cui viene usato. Quindi non va inserito nulla.. fa parte di quello che dovrò poi riempire io per esercitarmi.. ;)
Ci sono 5 moduli, perchè così posso stampare su uno stesso foglio 5 esercizi diversi relativi allo stesso range di parole e di forme grammaticali. Quindi le estrazioni di parole e forme grammaticali vanno ripetute. Idealmente senza replicarsi nei 5 moduli (ma non è essenziale...).
stefano_birdofprey
Utente Junior
 
Post: 13
Iscritto il: 27/01/12 00:45

Re: un macro excel per studiare giapponese

Postdi stefano_birdofprey » 29/01/12 13:43

Flash30005 ha scritto:
e nella riga 15 (cella unita) le forme grammaticali prelevate dal foglio "Grammatica" del punto 4 (forma grammaticale nel range lezioni 3:5 previste al punto 2) (?)


Ho riguardato il foglio che avevo pubblicato...
In effetti la riga 15 fa parte della parte in cui io poi devo scrivere i kanji.
Le forme grammaticali vanno inserite nella riga 14, dove ci sono 3 celle separate. :)

ora provo a fare le modifiche che hai suggerito (spero di riuscirci perchè non ho mai utilizzato le macro prima...)
appena fatto ti aggiorno!
grazie ancora!!! :)
stefano_birdofprey
Utente Junior
 
Post: 13
Iscritto il: 27/01/12 00:45

Re: un macro excel per studiare giapponese

Postdi stefano_birdofprey » 29/01/12 14:09

Flash30005 ha scritto:Allego anche il file nel quale ho apportato qualche modifica al pannello

ciao


grazie mille!! :) funziona benissimo!!!
stefano_birdofprey
Utente Junior
 
Post: 13
Iscritto il: 27/01/12 00:45

Re: un macro excel per studiare giapponese

Postdi Flash30005 » 29/01/12 15:08

Nella macro ho commentato due righe che servono, se non commentate, aa evitare di scrivere una stringa già trascritta nel modello, però, considerando che potresti selezionare una sola lezione (Lezione1 ad esempio) hai solo 11 possibilità
per riempire completamente il modello occorrono 30 vocaboli (6 x 5) e quindi se attivata questa riga:
Codice: Seleziona tutto
Sub Compila() 'nome macro
...
...
    For PT = 1 To 30                                         '    <<<< esistente
        'If VettP(PT) = StrP Then GoTo Ritenta    ' <<<< commentata
        If VettP(PT) = "" Then                           <<<<< esistente'

Il processo entrerebbe in Loop in quanto non trova più di 11 stringe diverse
Come potrebbe succedere per le forme grammaticali (Lezione1 solo 4 mentre se richieste 3 x 5 ne occorrerebero almeno 15)
Si potrebbe pensare anche a inserire una condizione che vedremo in seguito

Invece ti invio una modifica riguardante la cancellazione di tutti i campi sul modello invece di cancellarli uno alla volta

Sono poche righe ma ti invio la macro completa per evitare errori di riporto codice
Codice: Seleziona tutto
Sub Compila()
Dim ws1, ws2, ws3 As Worksheet
Set ws1 = Worksheets("Modello")
Set ws2 = Worksheets("Parole")
Set ws3 = Worksheets("Grammatica")
Dim VettP(30) As String
Dim VettF(15) As String
ColPI = ws1.[F2]
ColPF = ws1.[H2]
If ws1.[H2] < ws1.[F2] Then
MsgBox "Numero Lezione Dalla > del Numero Lezione Alla"
ws1.[H2]
End If
ColFI = ws1.[F4]
ColFF = ws1.[H4]
NP = ws1.[F6]
NF = ws1.[F8]
NSP = 1
NSF = 0
For NV = 1 To 30
VettP(NV) = ""
If NV < 16 Then VettF(NV) = ""
Next NV

For RP = 13 To 37 Step 6
    Application.EnableEvents = False
    ws1.Range(Cells(RP, 4), ws1.Cells(RP + 1, 9)).ClearContents
    Application.EnableEvents = True
Next RP

For RP = 13 To 37 Step 6
For NT = 1 To NP

Ritenta:
    ColR = Int(Rnd() * ColPF) + 1
    If ColR < ColPI Then GoTo Ritenta
    UR2 = ws2.Cells(Rows.Count, ColR).End(xlUp).Row
    Riga = Int(Rnd() * UR2) + 1
    If Riga = 1 Then GoTo Ritenta
    StrP = ws2.Cells(Riga, ColR).Value
    For PT = 1 To 30
        'If VettP(PT) = StrP Then GoTo Ritenta '<<< togliere commento per avere sempre parole diverse
        If VettP(PT) = "" Then
            VettP(PT) = StrP
            GoTo SaltaPT
        End If
    Next PT
SaltaPT:
Next NT
Application.EnableEvents = False
For NT = 1 To NP
    ws1.Cells(RP, NT + 3).Value = VettP(NSP)
    NSP = NSP + 1
Next NT
Application.EnableEvents = True
For NTF = 1 To NF
RitentaF:
    ColF = Int(Rnd() * ColFF) + 1
    If ColF < ColFI Then GoTo RitentaF
    UR3 = ws3.Cells(Rows.Count, ColF).End(xlUp).Row
    RigaF = Int(Rnd() * UR3) + 1
    If RigaF = 1 Then GoTo RitentaF
    StrF = ws3.Cells(RigaF, ColF).Value
    If StrF = "" Then GoTo RitentaF
    For PTF = 1 To 15
        'If VettF(PTF) = StrF Then GoTo RitentaF '<<< togliere commento per avere sempre Forme gramm diverse
        If VettF(PTF) = "" Then
            VettF(PTF) = StrF
            GoTo SaltaFT
        End If
    Next PTF
SaltaFT:
Next NTF
Application.EnableEvents = False
For NCF = 1 To NF
    NSF = NSF + 1
    ws1.Cells(RP + 1, 2 * NCF + 2).Value = VettF(NSF)
Next NCF
Application.EnableEvents = True

Next RP
End Sub


Quanto commentato è valido solo se ogni lezione ha più di 30 voci (o più di 15 forme grammaticali per non innescare il loop)

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: un macro excel per studiare giapponese

Postdi stefano_birdofprey » 03/02/12 01:29

ok.. grazie. spero di riuscire a sostituire la macro senza fare casini (come dicevo non ho mai usato le macro prima).
Se volessi aggiungere delle colonne nei fogli relativi alle parole e/o regole grammaticali, es anzichè 20, metterne 25 o 30, che cosa devo modificare?
stefano_birdofprey
Utente Junior
 
Post: 13
Iscritto il: 27/01/12 00:45

Re: un macro excel per studiare giapponese

Postdi stefano_birdofprey » 03/02/12 01:44

Flash30005 ha scritto:
Quanto commentato è valido solo se ogni lezione ha più di 30 voci (o più di 15 forme grammaticali per non innescare il loop)

Ciao


Non ho capito... che succede se ogni lezione ha meno di 30 voci??
stefano_birdofprey
Utente Junior
 
Post: 13
Iscritto il: 27/01/12 00:45

Re: un macro excel per studiare giapponese

Postdi Flash30005 » 03/02/12 11:10

allora
se dal pannello scegli 1 lezione e 6 parole
volendo riempire il modulo in tutti i 5 test dovrai avere 30 parole disponibili
Inizialmente la macro, prima di inseire una nuova parola controllava che non era mai stata estratta in nessuna delle righe precedenti. Questo controllo l'ho dovuto commentare perché se le parole sono meno di 30
la macro va in loop, in quanto inserisce casualmente tutte le parole dispobili (20, 25 o 29) ma continua a cercare parole non estratte, parole che non trova essendo meno di 30.

Stessa cosa per la grammatica solo che essendo 3 casi per riga, li occorrono almeno 15 esempi

Questi due controllo li ho eliminati proprio per evitare che andasse in loop, infatti troverai delle parole ripetute specialmente se imposti una sola lezione con poche parole in elenco

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "un macro excel per studiare giapponese":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti