[Risolto] Macro per simil-sudoku
[Risolto] Macro per simil-sudoku
Mi servirebbe riempire un'area con una serie di valori che rispettino determinate condizioni, una specie di sudoku ma con regole meno restrittive.
Nel file di esempio (risolto a mano) l'area da popolare è quella in verde (C2:H14) ed i valori delle suddette celle devono rispettare determinati parametri:
- i valori devono essere numeri interi maggiori o uguali a zero;
- per ogni riga, la somma dei valori inseriti deve essere minore o uguale al valore target indicato nella colonna B
- per ogni colonna, la somma dei valori inseriti deve essere uguale al valore target indicato nella riga 1.
Non importa se nella riga o nella colonna sono presenti valori ripetuti purchè siano rispettate le sopracitate condizioni.
Personalmente, non avrei idea di come iniziare e di come scrivere la macro.
Potete darmi una mano?
Nel file di esempio (risolto a mano) l'area da popolare è quella in verde (C2:H14) ed i valori delle suddette celle devono rispettare determinati parametri:
- i valori devono essere numeri interi maggiori o uguali a zero;
- per ogni riga, la somma dei valori inseriti deve essere minore o uguale al valore target indicato nella colonna B
- per ogni colonna, la somma dei valori inseriti deve essere uguale al valore target indicato nella riga 1.
Non importa se nella riga o nella colonna sono presenti valori ripetuti purchè siano rispettate le sopracitate condizioni.
Personalmente, non avrei idea di come iniziare e di come scrivere la macro.
Potete darmi una mano?
- Allegati
-
- test.ods
- (14.78 KiB) Scaricato 163 volte
Ultima modifica di charlie il domenica 7 aprile 2019, 19:24, modificato 2 volte in totale.
Motivazione: Aggiunta spunta verde
Motivazione: Aggiunta spunta verde
LibreOffice 67.4 su Linux Mint 21.1
Re: Macro per simil-sudoku
Per curiosità, tu scrivi che l'area verde è C2:H14 mentre nel file l'area è C2:H32
Hai sbagliato a scrivere o ti serve davvero solo l'area C2:H14?
Per il primo punto puoi tranquillamente usare Validità dal menù Dati e dirgli di accettare solo "Numeri interi" e "Maggiore o uguale" a 0.
Non ho capito poi se la macro deve solo controllare o riempire le celle.
Se deve solo controllare, potresti anche usare la formattazione condizionale e impostare che se non rispettano le regole si attivi lo sfondo rosso.
Ad esempio se la somma della prima riga supera il valore target, la prima riga sarà con sfondo rosso. Modificando i valori e inserendo valori corretti, lo sfondo tornerà verde.
Hai sbagliato a scrivere o ti serve davvero solo l'area C2:H14?
Per il primo punto puoi tranquillamente usare Validità dal menù Dati e dirgli di accettare solo "Numeri interi" e "Maggiore o uguale" a 0.
Non ho capito poi se la macro deve solo controllare o riempire le celle.
Se deve solo controllare, potresti anche usare la formattazione condizionale e impostare che se non rispettano le regole si attivi lo sfondo rosso.
Ad esempio se la somma della prima riga supera il valore target, la prima riga sarà con sfondo rosso. Modificando i valori e inserendo valori corretti, lo sfondo tornerà verde.
Apache OpenOffice 4.1.5 su Windows 10
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Re: Macro per simil-sudoku
no, è stato un lapsus calami.
Ho scritto l'area a memoria, quella che mi serve è tutta l'area in verde C2:H32
La macro dovrebbe riempire le celle, mentre per il controllo utilizzo già la formattazione condizionale (non riportata nel file di esempio ma funzionante su quello di "lavoro") per evidenziare eventuali errori/discrepanze.
Si può anche farlo a mano, ma dovrei farlo per circa 1500 fogli diversi ed una macro sarebbe molto più comoda
Ho scritto l'area a memoria, quella che mi serve è tutta l'area in verde C2:H32
La macro dovrebbe riempire le celle, mentre per il controllo utilizzo già la formattazione condizionale (non riportata nel file di esempio ma funzionante su quello di "lavoro") per evidenziare eventuali errori/discrepanze.
Si può anche farlo a mano, ma dovrei farlo per circa 1500 fogli diversi ed una macro sarebbe molto più comoda
LibreOffice 67.4 su Linux Mint 21.1
Re: Macro per simil-sudoku
Se devi farlo per 1500 fogli....devi comunque copiare 1500 volte la macro.
Comunque vuoi una macro che generi numeri random riempiendo la tabella in modo da rispettare quei 3 criteri, giusto?
Comunque vuoi una macro che generi numeri random riempiendo la tabella in modo da rispettare quei 3 criteri, giusto?
Apache OpenOffice 4.1.5 su Windows 10
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Re: Macro per simil-sudoku
Ti provo ad allegare un file con una macro scritta molto in fretta...
Dovrebbe comunque funzionare.
Fai qualche test e facci sapere.
Dovrebbe comunque funzionare.
Fai qualche test e facci sapere.
- Allegati
-
- test.ods
- (12.83 KiB) Scaricato 151 volte
Apache OpenOffice 4.1.5 su Windows 10
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Re: Macro per simil-sudoku
la macro funziona ma non rispetta bene il vincolo sulle colonne, è comunque un'ottima base per me in modo da poter iniziare a comprendere e studiarci su.
Ora ci "gioco" un po'
GRAZIE MILLE!!!!
Ora ci "gioco" un po'
GRAZIE MILLE!!!!
LibreOffice 67.4 su Linux Mint 21.1
Re: Macro per simil-sudoku
In che modo non rispetta il vincolo sulle colonne?
Comunque "giocarci" è sempre il modo migliore per imparare e capire bene sia come funzionano sia come modificarle.
Comunque "giocarci" è sempre il modo migliore per imparare e capire bene sia come funzionano sia come modificarle.
Apache OpenOffice 4.1.5 su Windows 10
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Re: Macro per simil-sudoku
che il valore della somma a fine colonna non è uguale al valore target (forse non ho saputo spiegarmi al meglio).
Ad esempio, per la colonna C vorrei che la cella C33 (calcolata come) sia uguale alla cella C1 che è un valore imposto.
Nel file allegato in cui ho provato a far eseguire la macro, ho la seguente situazione
C1=16 e C33=12
D1=17 e D33=16
E1=14 e E33=13
Probabilmente non ero stato molto chiaro
Ad esempio, per la colonna C vorrei che la cella C33 (calcolata come
Codice: Seleziona tutto
=SOMMA(C2:C32)
Nel file allegato in cui ho provato a far eseguire la macro, ho la seguente situazione
C1=16 e C33=12
D1=17 e D33=16
E1=14 e E33=13
Probabilmente non ero stato molto chiaro
- Allegati
-
- PROVA.ods
- (16.1 KiB) Scaricato 144 volte
LibreOffice 67.4 su Linux Mint 21.1
Re: Macro per simil-sudoku
No no eri stato chiaro.
Ho mischiato la regola 2 e la 3 e non mi ricordavo che solo la riga andava bene <= mentre la colonna doveva essere =
Ho mischiato la regola 2 e la 3 e non mi ricordavo che solo la riga andava bene <= mentre la colonna doveva essere =
Apache OpenOffice 4.1.5 su Windows 10
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Re: Macro per simil-sudoku
Ciao, io avevo capito che dovevano essere uguali sia il target riga che i totali di colonna
Ti allego esempio, naturalmente la somma target riga deve essere uguale alla somma delle colonne in questo caso
Ti allego esempio, naturalmente la somma target riga deve essere uguale alla somma delle colonne in questo caso
- Allegati
-
- PROVA.ods
- (14.49 KiB) Scaricato 140 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Macro per simil-sudoku
Grazie, sembra lavorare bene ed è un'ottima base per successivi affinamenti.
Solo che non riempie le celle delle righe 31 e 32, probabilmente bisogna giocare un po' con gli indici.
Ancora grazie per l'ottimo aiuto!!!!
Solo che non riempie le celle delle righe 31 e 32, probabilmente bisogna giocare un po' con gli indici.
Ancora grazie per l'ottimo aiuto!!!!
LibreOffice 67.4 su Linux Mint 21.1
Re: Macro per simil-sudoku
Se il totale del target riga e delle colonne è diverso è ovvio che non completa la sequenza, anzi va in loop, infatti avevo specificato che questi 2 dati dovevano corrispondere come da mio allegato.Adso72 ha scritto: Solo che non riempie le celle delle righe 31 e 32, probabilmente bisogna giocare un po' con gli indici.
Invece questo che allego dovrebbe andare bene con i 3 parametri da te richiesti
- Allegati
-
- test.ods
- (13.52 KiB) Scaricato 137 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Macro per simil-sudoku
E' (quasi) perfetta Se provo a cambiare i dati non compila la colonna HGaetanopr ha scritto:Se il totale del target riga e delle colonne è diverso è ovvio che non completa la sequenza, anzi va in loop, infatti avevo specificato che questi 2 dati dovevano corrispondere come da mio allegato.Adso72 ha scritto: Solo che non riempie le celle delle righe 31 e 32, probabilmente bisogna giocare un po' con gli indici.
Invece questo che allego dovrebbe andare bene con i 3 parametri da te richiesti
Ti ringrazio, in ogni caso!!!
Una domanda che esula dalla macro specifica: se eseguo una macro, questa viene eseguita sul foglio attivo?
Cerco di essere più chiaro, ho Foglio1, Foglio2, Foglio3 etc ognuno con una certa combinazione da riempire; se eseguo la macro, questa riempie i dati per quale foglio? Quello che ha il focus?
- Allegati
-
- noH.ods
- (16.76 KiB) Scaricato 105 volte
LibreOffice 67.4 su Linux Mint 21.1
Re: Macro per simil-sudoku
Ho provato adesso e funziona, magari non la compila a primo colpo, bisogna rilanciare la macro, ho indicato un tempo massimo di 5 secondi dopo i quali la macro smette di lavorare e bisogna rilanciarla questo perchè a volte potrebbe perdere moltissimo tempo a cercare la combinazioni di numeri necessaria a soddisfare i parametri, ma solitamente in meno di 1 secondo riesce a completare la griglia
Per quanto riguarda i fogli la macro compila la griglia del primo foglio, ecco 'istruzione dove l'indice 0 sta per il primo foglio, se vuoi farla lavorare per tutti i fogli o per alcuni basta creare un ciclo.
Per quanto riguarda i fogli la macro compila la griglia del primo foglio, ecco 'istruzione
Codice: Seleziona tutto
Sh = Doc.Sheets(0)
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Macro per simil-sudoku
Ancora grazie!!!
Ultima richiesta: mi potresti un buon libro/sito dove iniziare a studiare per le macro?
E' tanto che non programmo ma le nozioni basi le ho, ricordo ancora bene turbopascal e fortran.... preistoria!!!!!
Ultima richiesta: mi potresti un buon libro/sito dove iniziare a studiare per le macro?
E' tanto che non programmo ma le nozioni basi le ho, ricordo ancora bene turbopascal e fortran.... preistoria!!!!!
LibreOffice 67.4 su Linux Mint 21.1
Re: Macro per simil-sudoku
https://wiki.openoffice.org/wiki/IT/Doc ... ASIC_Guide
viewtopic.php?f=35&t=9432
a me aiutano e hanno aiutato molto per le cose principali.
Secondo me è una ottima base di partenza in italiano.
Poi ci sono altre risorse (in inglese principalmente)
viewtopic.php?f=35&t=9432
a me aiutano e hanno aiutato molto per le cose principali.
Secondo me è una ottima base di partenza in italiano.
Poi ci sono altre risorse (in inglese principalmente)
Apache OpenOffice 4.1.5 su Windows 10
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Re: Macro per simil-sudoku
grazie! ho un bel po' da leggereEramad ha scritto:https://wiki.openoffice.org/wiki/IT/Doc ... ASIC_Guide
viewtopic.php?f=35&t=9432
a me aiutano e hanno aiutato molto per le cose principali.
Secondo me è una ottima base di partenza in italiano.
Poi ci sono altre risorse (in inglese principalmente)
LibreOffice 67.4 su Linux Mint 21.1