Convertire delle formule/codice da Excel

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
solenero
Messaggi: 8
Iscritto il: venerdì 21 luglio 2017, 21:17

Convertire delle formule/codice da Excel

Messaggio da solenero »

Salve a tutti, per una questione puramente di cambio programmi (da office e openoffice) ho su un foglio di calcolo il seguente problema..

In sostanza ho (avevo) su un foglio di exel una macro, che attivandola con un click attivava un processo di "calcolo".
Il codice che era nella macro (scritto non benissimo, ma funzionante) è questo:

Codice: Seleziona tutto

Sub NumCas()
Cells.Clear
N = InputBox("Numero di sestine")
For riga = 1 To N
Inizio:
For NC = 1 To 6
ripeti:
Cas = Int(Rnd(90) * 90) + 1
If Evaluate("=countif(Foglio1!A" & riga & ":F" & riga & "," & Cas & ")") = 1 Then GoTo ripeti
Cells(riga, NC).Value = Cas
Next NC
UR2 = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
For RR2 = 1 To UR2
If Evaluate("=SUM(COUNTIF(Foglio1!A1:F1,Foglio2!A" & RR2 & ":F" & RR2 & "))") > 2 Then GoTo Inizio
Next RR2
Next
Range("A1:F" & N).Interior.ColorIndex = 43
MsgBox "Elaborazione completata"
End Sub
In sostanza funziona così dopo aver attivato la macro:
1) viene chiesto in video il numero di sestine
2) le sestine elaborate vengono confrontate con altre già presenti nel foglio2 e se queste hanno più di 2 valori uguali (in questo caso, la sestina elaborata viene cestinata e rielaborata)
3) una volta elaborate il numero delle sestine richieste e dopo che queste soddisfino i requisiti del foglio2, queste vengono riportate nel foglio1 in celle con lo sfondo verde

Considerando che stavo per metterci mano, volevo (mi piacerebbe) apportare delle modifiche. :)
Nell'allegato ho "imbastito" un foglio di calcolo con 5 fogli.
-> Estrazione
-> 00 00 01
-> 00 00 02
-> 00 00 03
-> 00 00 04

Nel foglio "Estrazione" verranno riportate le sestine che vengono elaborate, inoltre c'è un quadrato dove andrà applicata la macro per poter attivare l'elaborazione (al click)
Nel foglio "00 00 01" ci sono in un unica colonna i 90 numeri, l'elaborazione deve prevedere almeno 6 valori presenti nel foglio nella colonna A
Nel foglio "00 00 02" ci sono diverse coppie di valori (per facilitare la spiegazione, li chiamerò numeri specchio). La sestina deve avere almeno 1 coppia di numeri specchio e non più di 2 coppie
Nel foglio "00 00 03" ci sono diverse sestine di valori. La sestina elaborata può avere al massimo 3 numeri presenti in ogni sestina presente nel foglio
Nel foglio "00 00 04" ci sono in un unica colonna dei valori, la sestina non deve avere nessuno dei valori riportati nel foglio

E' possibile poter fare una cosa simile?

Grzie infinite per la comprensione e grazie a qualunque anima Pia che decide e vuole aiutarmi. XD
Buona serata. :)
Allegati
Test 00 01.ods
(8.81 KiB) Scaricato 93 volte
OpenOffice 4.1.3
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Convertire delle formule/codice da Excel

Messaggio da charlie »

Ciao e benvenuto sul forum.
Se intanto ti vuoi presentare puoi farlo qui: v ... m.php?f=16
Buon proseguimento.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Convertire delle formule/codice da Excel

Messaggio da patel »

semplificando un poco il codice vba si riesce a farlo digerire da Calc, io l'ho provato con Libre

Codice: Seleziona tutto

Option VBASupport 1

Sub Num_Cas()
CompatibilityMode(True)
    Cells.Clear
    N = InputBox("Numero di sestine")
    For riga = 1 To N
Inizio:
    For NC = 1 To 6
ripeti:
    Cas = Int(Rnd(90) * 90) + 1
    Set Rng = Sheets(1).Range("A" & riga & ":F" & riga)
    If Application.CountIf(Rng, Cas) = 1 Then GoTo ripeti
    Cells(riga, NC).Value = Cas
    Next NC
    UR2 = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
    For RR2 = 1 To UR2
    Set Rng1 = Sheets(1).Range("A1:F1")
    Set Rng2 = Sheets(2).Range("A" & RR2 & ":F" & RR2)
    If Application.Sum(Application.CountIf(Rng1, Rng2)) > 2 Then GoTo Inizio
    Next RR2
    Next
    Range("A1:F" & N).Interior.ColorIndex = 43
    MsgBox "Elaborazione completata"
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
solenero
Messaggi: 8
Iscritto il: venerdì 21 luglio 2017, 21:17

Re: Convertire delle formule/codice da Excel

Messaggio da solenero »

@presentazione fatta. :)

@ho provato il codice, ma quando faccio partire la macro mi da problemi... ho provato a eliminare/modificare alcune parti, ma nulla.. :(
OpenOffice 4.1.3
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Convertire delle formule/codice da Excel

Messaggio da patel »

con Libre funziona, con OO da errore, OO è sempre un passo indetro come aggiornamenti rispetto a LO
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
solenero
Messaggi: 8
Iscritto il: venerdì 21 luglio 2017, 21:17

Re: Convertire delle formule/codice da Excel

Messaggio da solenero »

Sto scaricando Libre 5.2.7. e (ri)provo.
Ti aggiorno e ti faccio sapere, grazie nel frattempo :)
OpenOffice 4.1.3
solenero
Messaggi: 8
Iscritto il: venerdì 21 luglio 2017, 21:17

Re: Convertire delle formule/codice da Excel

Messaggio da solenero »

No, non funziona.
Prima mi da errore nella codice: cells.clear
poco male, lo cancello per vedere se andrebbe avanti, ma nulla. Nuovo errore:
Errore di runtime Basic. '35 sheet
(alla riga: set Rng = sheets....)

Domanda stupida, ma come mai non si può farlo su openoffice?
se si riuscisse, lo preferirei :)

Grazie ancora a tutti. :)
OpenOffice 4.1.3
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Convertire delle formule/codice da Excel

Messaggio da patel »

hai copiato bene la macro ? hai messo la riga
Option VBASupport 1 prima della sub e CompatibilityMode(True) dopo la sub ?

trasformare questa macro in basic di OO non è banale.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
solenero
Messaggi: 8
Iscritto il: venerdì 21 luglio 2017, 21:17

Re: Convertire delle formule/codice da Excel

Messaggio da solenero »

Sicuramente sbaglio qualcosa...
e non capisco cosa :(
in allegato il file con la macro applicata ad una figura nel foglio 1...

Dove ho sbagliato?
Allegati
Libre.ods
(8.08 KiB) Scaricato 87 volte
OpenOffice 4.1.3
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Convertire delle formule/codice da Excel

Messaggio da patel »

hai allegato un file senza dati e senza macro, prova questo
Allegati
Test 00 01.ods
(11.23 KiB) Scaricato 116 volte
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
solenero
Messaggi: 8
Iscritto il: venerdì 21 luglio 2017, 21:17

Re: Convertire delle formule/codice da Excel

Messaggio da solenero »

Porco cacchio! ..ma sei un genio :S
Bravo, funziona.
Grazie! :)
Prima di mettere il tag RISOLTO, potrei disturbarti in privato (eventualmente) per domande su questo stesso "progetto"?
Perchè non riesco a capire come fare per modificare le condizioni, nel senso che non riesco a capire dove, nel codice, viene indicata anche il semplice foglio XD
Onestamente sono molto ignorante in materia, quello con excel mi ero mooooooolto arrangiato :(

(senza che apro altri post... o continuo su questo?)
OpenOffice 4.1.3
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Convertire delle formule/codice da Excel

Messaggio da patel »

mi sembra molto semplice
Sheets(1) è il primo foglio
Sheets(2) è il secondo foglio
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
solenero
Messaggi: 8
Iscritto il: venerdì 21 luglio 2017, 21:17

Re: Convertire delle formule/codice da Excel

Messaggio da solenero »

si, hai ragione, ma siccome il file ne ha 5 di fogli.. e leggendo "solo" fino al Sheets(2)... come funzionavano gli altri.
Però cercherò di smanettarci per capire come funziona e ripropongo.
Grazie ancora. :)

EDIT:
Se non ho capito male, hai adattato il primo "controllo" che avevo riportato (<2).
Ora, nel nuovo codice, come faccio a far controllare nelle schede successive le seguenti condizioni?

foglio 3
ci sono diverse coppie di valori nelle prime due colonne (per facilitare la spiegazione, li chiamerò numeri specchio). La sestina deve avere al massimo 1 coppia di numeri specchio e non più di 2 coppie

foglio4
ci sono in un unica colonna dei valori, la sestina non deve avere nessuno dei valori riportati nel foglio

Se ho capito male, perdona la mia ignoranza. :(
OpenOffice 4.1.3
Rispondi