Il problema dei 3 corpi: Attraverso continenti e decadi, cinque amici geniali fanno scoperte sconvolgenti mentre le leggi della scienza si sgretolano ed emerge una minaccia esistenziale. Vieni a parlarne su TopManga.
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Errore di sintassi in FormulaLocal

Ultimo Aggiornamento: 01/08/2018 22:01
Post: 222
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
01/08/2018 14:41

Ciao a tutti,
ho una formula folle...ma funzionante [SM=g27823] :
  ::=SE(Correttore!C5="A";1;SE(Correttore!C5="B";2;SE(Correttore!C5="C";3;SE(Correttore!C5="D";4))))&SE(Correttore!D5="A";1;SE(Correttore!D5="B";2;SE(Correttore!D5="C";3;SE(Correttore!D5="D";4))))&SE(Correttore!E5="A";1;SE(Correttore!E5="B";2;SE(Correttore!E5="C";3;SE(Correttore!E5="D";4))))&SE(Correttore!F5="A";1;SE(Correttore!F5="B";2;SE(Correttore!F5="C";3;SE(Correttore!F5="D";4))))&SE(Correttore!G5="A";1;SE(Correttore!G5="B";2;SE(Correttore!G5="C";3;SE(Correttore!G5="D";4))))&SE(Correttore!H5="A";1;SE(Correttore!H5="B";2;SE(Correttore!H5="C";3;SE(Correttore!H5="D";4))))&SE(Correttore!I5="A";1;SE(Correttore!I5="B";2;SE(Correttore!I5="C";3;SE(Correttore!I5="D";4))))&SE(Correttore!J5="A";1;SE(Correttore!J5="B";2;SE(Correttore!J5="C";3;SE(Correttore!J5="D";4))))&SE(Correttore!K5="A";1;SE(Correttore!K5="B";2;SE(Correttore!K5="C";3;SE(Correttore!K5="D";4))))&SE(Correttore!L5="A";1;SE(Correttore!L5="B";2;SE(Correttore!L5="C";3;SE(Correttore!L5="D";4))))


che vorrei inserire con una macro:
 ::Sub Risultatotest()
 Sheets("Test5").Range("A86").FormulaLocal= "=SE(Correttore!C5="A";1;SE(Correttore!C5="B";2;SE(Correttore!C5="C";3;SE(Correttore!C5="D";4))))&SE(Correttore!D5="A";1;SE(Correttore!D5="B";2;SE(Correttore!D5="C";3;SE(Correttore!D5="D";4))))&SE(Correttore!E5="A";1;SE(Correttore!E5="B";2;SE(Correttore!E5="C";3;SE(Correttore!E5="D";4))))&SE(Correttore!F5="A";1;SE(Correttore!F5="B";2;SE(Correttore!F5="C";3;SE(Correttore!F5="D";4))))&SE(Correttore!G5="A";1;SE(Correttore!G5="B";2;SE(Correttore!G5="C";3;SE(Correttore!G5="D";4))))&SE(Correttore!H5="A";1;SE(Correttore!H5="B";2;SE(Correttore!H5="C";3;SE(Correttore!H5="D";4))))&SE(Correttore!I5="A";1;SE(Correttore!I5="B";2;SE(Correttore!I5="C";3;SE(Correttore!I5="D";4))))&SE(Correttore!J5="A";1;SE(Correttore!J5="B";2;SE(Correttore!J5="C";3;SE(Correttore!J5="D";4))))&SE(Correttore!K5="A";1;SE(Correttore!K5="B";2;SE(Correttore!K5="C";3;SE(Correttore!K5="D";4))))&SE(Correttore!L5="A";1;SE(Correttore!L5="B";2;SE(Correttore!L5="C";3;SE(Correttore!L5="D";4))))" 
End Sub]


Ma ottengo ERRORE di SINTASSI

Dove sbaglio?

Grazie in anticipo
Gene
PS Non allego file perchè ritengo che sia un semplice errore dello scrivente. Se necessita lo posto velocemente.
[Modificato da BG66 01/08/2018 14:43]
BG66
Excel 2010
Post: 3.627
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
01/08/2018 15:17

Il problema sono le virgolette "" che usi nella formula, >>>.FormulaLocal = "=formula"
Siccome usi .FormulaLocal= "=SE(Correttore!C5=" qui il VBA interrompe la formula. Dovresti modificarla in
.FormulaLocal = "=SE(Correttore!C5=" & "A" & ";1;SE(Correttore!C5=" & "B" &";2;ecc ecc))"
Ho tentato d'inserirla come .FormulaR1C1 e c'è pure un problema di lunghezza.
Ps. ho rinominato il foglio Correttore in C. Funziona
Oppure nel foglio Correttore dai un nome a tutte le celle, la cella C5 Ex CC, la cella D5 Ex DD ecc ecc e la formula diventa similare =SE(CC="A";1;SE(CC="B";2;SE(CC="C";3;SE(CC="D";4;""))))&SE(DD="A";1;SE(DD="B";2;SE(DD="C";3;SE(DD="D";4;""))))ecc ecc
[Modificato da raffaele1953 01/08/2018 16:26]
Excel 2013
Post: 1.898
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
01/08/2018 16:59

Ciao
solo per ricordare che in vba (formulalocal) le stringhe vanno racchiuse tra 4 apici, cioè:

...SE(Correttore!C5=""A"";1;........

ma vista la lunghezza credo avrai problemi sul max di caratteri per istruzione. (a meno di mandarla a capo cosa non facile).

Segui il consiglio di Raffaele..(saluti)



[Modificato da dodo47 01/08/2018 17:17]
Domenico
Win 10 - Excel 2016
Post: 222
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
01/08/2018 21:03

Ciao Raffaele,
il foglio "correttore" nel file master viene cancellato e ricreato ad ogni nuovo test quindi devo per forza "lavorarci" successivamente.
Quindi ho provato a modificare la macro usando il tuo primo consiglio ma lanciando la macro ottengo come risultato:
[IMG]http://[/IMG]
Allego file usato per le prove.

Grazie per l'aiuto.
Gene
[Modificato da BG66 01/08/2018 21:04]
BG66
Excel 2010
Post: 650
Registrato il: 02/08/2015
Utente Senior
Excel 2013
OFFLINE
01/08/2018 21:06

Ciao a tutti,

@BG
ti consiglio di sotituire i doppi apici interni alla formula con un altro carattere che non si usa quasi mai (esempio il cacelletto) e poi risostituisci tutto quando assegni la formula.

Per capirci....
Supponendo che in A1 metti quella formula, in A2 scriverai:
=SOSTITUISCI(A1;CODICE.CARATT(34);"#")

dopo copi/incolli SOLO VALORI in un altra cella per ottenere un stringa che non causi errori di sintassi.
Quindi potrai usare come codice:
Sub prova()
    Dim MyFormula As String
    
    MyFormula = "=SE(Correttore!C5=#A#;1;SE(Correttore!C5=#B#;2;SE(Correttore!C5=#C#;3;SE(Correttore!C5=#D#;4))))&SE(Correttore!D5=#A#;1;SE(Correttore!D5=#B#;2;SE(Correttore!D5=#C#;3;SE(Correttore!D5=#D#;4))))&SE(Correttore!E5=#A#;1;SE(Correttore!E5=#B#;2;SE(Correttore!E5=#C#;3;SE(Correttore!E5=#D#;4))))&SE(Correttore!F5=#A#;1;SE(Correttore!F5=#B#;2;SE(Correttore!F5=#C#;3;SE(Correttore!F5=#D#;4))))&SE(Correttore!G5=#A#;1;SE(Correttore!G5=#B#;2;SE(Correttore!G5=#C#;3;SE(Correttore!G5=#D#;4))))&SE(Correttore!H5=#A#;1;SE(Correttore!H5=#B#;2;SE(Correttore!H5=#C#;3;SE(Correttore!H5=#D#;4))))&SE(Correttore!I5=#A#;1;SE(Correttore!I5=#B#;2;SE(Correttore!I5=#C#;3;SE(Correttore!I5=#D#;4))))&SE(Correttore!J5=#A#;1;SE(Correttore!J5=#B#;2;SE(Correttore!J5=#C#;3;SE(Correttore!J5=#D#;4))))&SE(Correttore!K5=#A#;1;SE(Correttore!K5=#B#;2;SE(Correttore!K5=#C#;3;SE(Correttore!K5=#D#;4))))&SE(Correttore!L5=#A#;1;SE(Correttore!L5=#B#;2;SE(Correttore!L5=#C#;3;SE(Correttore!L5=#D#;4))))"
    Sheets("Test5").Range("A86").FormulaLocal = Replace(MyFormula, "#", Chr(34))
End Sub


oppure puoi fare tutto tramite codice:
Sub prova()
    Dim MyFormula As String
    
    MyFormula = Replace(Range("A1").FormulaLocal, Chr(34), "#")
    Sheets("Test5").Range("A86").FormulaLocal = Replace(MyFormula, "#", Chr(34))
End Sub


Ciao
Tore
[Modificato da cromagno 01/08/2018 21:07]


"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Post: 223
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
01/08/2018 21:12

Ciao Tore,
ci siamo accavallati.
Tenuto conto di quanto ho aggiunto come informazione ( macro esistente che elimina e ricrea sia il Foglio Test5 che il correttore ad ogni nuovo quiz)il tuo consiglio devo attuarlo in un foglio che non "sparisce" per poi copiarlo in Test5?? [SM=g27833]
In pratica io pensavo di lanciare le macro esistente e solo dopo che la situazione era "stabile" aggiungere CALL Sub RisultatoTest.

Grazie
Gene
[Modificato da BG66 01/08/2018 21:14]
BG66
Excel 2010
Post: 651
Registrato il: 02/08/2015
Utente Senior
Excel 2013
OFFLINE
01/08/2018 21:26

Re:
BG66, 01/08/2018 21.12:


il tuo consiglio devo attuarlo in un foglio che non "sparisce" per poi copiarlo in Test5??



Ciao,
no....
nella prima opzione che ti ho proposto, la "conversione" la fai su un foglio a tua scelta ed assegni alla variabile MyFormula direttamente la stringa/formula.... quindi del foglio dove hai fatto la conversione, puoi farne quello che vuoi, anche eliminarlo.


[Modificato da cromagno 01/08/2018 21:51]


"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Post: 224
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
01/08/2018 21:44

Ciao.
Capito..applicato..[RISOLTO]
[SM=x423017]

Gene
BG66
Excel 2010
Post: 3.629
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
01/08/2018 22:01

Edit vedo che hai risolto
Se permetti suggerisco di complettare la formula in =SE(Correttore!C5="A";1;SE(Correttore!C5="B";2;SE(Correttore!C5="C";3;SE(Correttore!C5="D";4;""))))& ecc ecc nel caso fosse vuota appare FALSO.
Ps. La soluzione di dare i nomi alle celle C5:L5 mi sembra la miglior soluzione per accorciare la formula

Come scritto basterebbe usare un nome del foglio con meno caratteri
Se Tu rinomini il foglio Correttore in X, vai sulla Tua formula, la vedrai similare =SE('X'!C5="A";1;SE('X'!C5="B";ecc ecc
Copy la Formula e la incolli in un TXT, sostituisci "A" con ""A"". sostituisci "B" con ""B"", idem per "C" e "D"
Ora nel codice Sheets("Test5").Range("A86").FormulaLocal = "=inserisci la formula del TXT tra le virgolette"

Se non puoi rinominare il foglio, faglielo fare al VBA. Rinomina,incolla la formula e rinomina nuovamente
vb
Sub Macro1()
    Sheets("Correttore").Name = "C"
    Sheets("Test5").Range("A86").FormulaLocal = "=SE('C'!C5=""A"";1;SE('C'!C5=""B"";2;SE('C'!C5=""C"";3;SE('C'!C5=""D"";4))))&SE('C'!D5=""A"";1;SE('C'!D5=""B"";2;SE('C'!D5=""C"";3;SE('C'!D5=""D"";4))))&SE('C'!E5=""A"";1;SE('C'!E5=""B"";2;SE('C'!E5=""C"";3;SE('C'!E5=""D"";4))))&SE('C'!F5=""A"";1;SE('C'!F5=""B"";2;SE('C'!F5=""C"";3;SE('C'!F5=""D"";4))))&SE('C'!G5=""A"";1;SE('C'!G5=""B"";2;SE('C'!G5=""C"";3;SE('C'!G5=""D"";4))))&SE('C'!H5=""A"";1;SE('C'!H5=""B"";2;SE('C'!H5=""C"";3;SE('C'!H5=""D"";4))))&SE('C'!I5=""A"";1;SE('C'!I5=""B"";2;SE('C'!I5=""C"";3;SE('C'!I5=""D"";4))))&SE('C'!J5=""A"";1;SE('C'!J5=""B"";2;SE('C'!J5=""C"";3;SE('C'!J5=""D"";4))))&SE('C'!K5=""A"";1;SE('C'!K5=""B"";2;SE('C'!K5=""C"";3;SE('C'!K5=""D"";4))))&SE('C'!L5=""A"";1;SE('C'!L5=""B"";2;SE('C'!L5=""C"";3;SE('C'!L5=""D"";4))))"
    Sheets("C").Name = "Correttore"
End Sub
[Modificato da raffaele1953 01/08/2018 22:26]
Excel 2013
Vota: 15MediaObject5,0029 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
errore #VALORE! in CONTA.SE (7 messaggi, agg.: 27/04/2020 09:19)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 16:24. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com