Formula nidificata
Hai un problema con Excel? 
Formula nidificata
di DPG70 (utente non iscritto) data: 19/02/2016 09:26:21
Ho nidificato questa funzione "Se" di excel che volevo creare tentando anche poi di farlo con vba:
=SE(RICERCA("F24";B21)="8";STRINGA.ESTRAI(B21;6;2)&" "&STRINGA.ESTRAI(B21;1;4)&" F24";SE(RICERCA("20016981";B21)="29";STRINGA.ESTRAI(B21;5;2)&" "&STRINGA.ESTRAI(B21;1;4)&" EDILCASSA";"")),
ma non mi funziona.
Mentre la funzione: SE(RICERCA("CED";B23)=9;STRINGA.ESTRAI(B23;1;8)&"CED";""), funziona.
Non trovo l'errore!
Grazie.
di Mister_x (utente non iscritto) data: 19/02/2016 09:46:28
ciao
senza un file di verifica, penso che non si possa individuare perché
comunque al primo approccio di lettura mi sorge gia' il primo dubbio
SE(RICERCA("F24";B21)="8";
il numero 8 e' un valore o una stringa ???, se e' una stringa la comparazione ="8" e' ok, se valore deve essere =8 !!!!
posta un file di esempio di prova
ciao
di DPG70 (utente non iscritto) data: 19/02/2016 21:42:02
Invio file esempio.
Cercavo un automatismo personalizzato per l'identificazione della provenienza dei vari files.
Creato questo,
volevo rinominare il file identificato in un modo personalizzato.
Come si vede, i files in base alla provenienza hanno una seri di caratteristiche comuni, sulla posizione, l'uso e all'utilizzo dei caratteri che ne compongono il nome stesso.
Ora utilizzando formule excel nidificate, poi vorrei procedere se nelle mie possibilità, con codifica vba.
Grazie, Dario.
di Raffaele_53 data: 20/02/2016 14:30:07
in teoria =se(val.errore(form1;se(val.errore(form2;se(val.errore(form3;"";form3);form2);form1)
O10 =SE(VAL.ERRORE(RICERCA("CED";B10));SE(VAL.ERRORE(RICERCA("F24";B10));SE(VAL.ERRORE(RICERCA("20016981_TV";B10));"";STRINGA.ESTRAI(B10;1;4)&" "&STRINGA.ESTRAI(B9;15;2)&" EDILCASSA");STRINGA.ESTRAI(B10;1;8)&"F24");STRINGA.ESTRAI(B10;1;8)&"CED")
Perchè non usi colonne d'appoggio EX A2:A7 i tuoi dati
B1 = CED
C1 = F24
D1 = 20016981
In B2 =SE.ERRORE(STRINGA.ESTRAI($A2;1;7)&" " &STRINGA.ESTRAI($A2;RICERCA(B$1;$A2;1);LUNGHEZZA(B$1));"")
in C2 =SE.ERRORE(STRINGA.ESTRAI($A2;1;7)&" " &STRINGA.ESTRAI($A2;RICERCA(B$1;$A2;1);LUNGHEZZA(B$1));"")
In D2 =SE.ERRORE(STRINGA.ESTRAI($A2;1;4)&" " &STRINGA.ESTRAI($A2;15;2)&" " &STRINGA.ESTRAI($A2;RICERCA(D$1;$A2;1);LUNGHEZZA(D$1))&" EDILCASSA";"")
In E2 =B2&C2&D2
di Toscanaccio (utente non iscritto) data: 20/02/2016 19:05:59
Ciao!
Ammetto di non aver compreso bene il problema.
Se era quello che le formule N12:N15 davano errore era dovuto al fatto che la funzione "ricerca"in caso di non trovato ti da errore e quindi non si passa all'opzione succesiva del se: se non trova CED da errore e non passa a cercare F24.
Io avrei aggirato utilizzando la funzione stringa.estrai al posto di ricerca, mettendo dunque in M10 e copiandola nelle celle sottostanti la formula:
=SE(STRINGA.ESTRAI(B10;9;3)="CED";STRINGA.ESTRAI(B12;1;8)&"CED";SE(STRINGA.ESTRAI(B10;9;3)="F24";STRINGA.ESTRAI(B10;1;8)&"F24";SE(STRINGA.ESTRAI(B10;29;11)="20016981_TV";STRINGA.ESTRAI(B10;1;4)&STRINGA.ESTRAI(B10;5;6)&" EDILCASSA";"Altrimenti…")))
"Altrimenti..." sta per : non so cosa vuoi scrivere dal momento che nella tua formula originale avevi riproposto la solita variabile del 2° se ossia:
(RICERCA("F24";B10)=9 che è esattamente uguale alla prima opzione nel caso in cui non trovi CED.
Non so se era questo che andavi cercando. Certo che non si possono nidificare più di 7 se, e se le variabili sono di più...
Confesso di non aver dimestichezza con la funzione val.errore suggeritati da Raffaele
Facci sapere.
Massimo
di DPG70 (utente non iscritto) data: 20/02/2016 19:59:28
Grazie ad entrambi per la soluzione, come sapevate sono entrambe corrette e utili al mio caso.
La soluzione di Raffaele è più centrata alla mia esigenza, in quanto mi rivela all'interno della stessa formula, la posizione dei caratteri di ricerca. Posizione che penso mi sia utile, nel caso di caratteri simili tipo (es. CED - CEDOLINI - CEDRO) presenti si nelle stringhe ma in posizioni diverse.
Toscanaccio, mi ha illuminato con una soluzione di formula alternativa e descritto puntualmente la natura del mio errore: Non sapevo che la funzione "RICERCA" in caso di non trovato, da errore e quindi non passa all'opzione succesiva del SE.
Ora grazie a voi, proverò ad inserire più fattori di ricerca e sapendo del limite massimo di 7 nidificazioni per la formula, vi chiedo se esiste un trucco per ovviare a tale limite ( o forse la proposta finale di Raffaele che non ho provato sul file, è la soluzione?).
Grazie mille, Dario.
di Raffaele_53 data: 21/02/2016 11:53:35
Excel 2003 = 7 nidificazioni & 7 nidificazioni = 14
Excel 2007 = oltre 50 nidificazioni
di DPG70 (utente non iscritto) data: 21/02/2016 12:08:14
Grazie Raffaele, ora uso excel 2013 e mi pareva che il limite di nidificazione fosse alto.
Ho applicato alla mia soluzione la nidificazione di Toscanaccio in quanto inserendo nuovi parametri con la tua creo errori per troppi argomenti inseriti, non ho capito come funzioni la tua formula nidificata.
di Toscanaccio (utente non iscritto) data: 21/02/2016 12:13:40
Beh, tu che hai il 2013 non hai problemi!
Io, tapino, ho ancora il 2000!
Quando necessario ho risolto utilizzando una cella d'appoggio a cui il settimo se rimandava se non aveva ancora trovato l'occorrenza giusta ed in cui potevo nidificare altri 7 se. Pensavo in questo modo si potesse nidificare teoricamente all'infinito, ma da quanto detto da Raffaele forse così non è! Sono nuovo ed ho ancora molte cose da imparare! !
di Raffaele_53 data: 21/02/2016 15:32:52
in pratica
=se.errore(formula); non voglio nulla ""), invece...
=se(val.errore(formula;"";formula)) --->se(val.errore(formula;"nulla oppure altra formula"; posso scrivo la stessa formula oppure un'altra)
ex =SE(VAL.ERRORE(CERCA.VERT(11;A:A;1;FALSO));"";SOMMA(A:A)))
ex se non trovo il valore in colonna A, allora posso cercare in B
=SE(VAL.ERRORE(CERCA.VERT(11;A:A;1;FALSO));CERCA.VERT(11;B:B;1;FALSO);CERCA.VERT(11;A:A;1;FALSO))
Facile da compilare in un txt con formule funzionanti
=se(val.errore(form1;"";form1)
=se(val.errore(form2;"";form2)
=se(val.errore(form3;"";form3) ecc ecc
Si prende l'ultima e si mette nella seconda al posti delle ""
Si prende la seconda complettata e si mette nella prima al posti delle "" (fatto)
@Toscanaccio
che io sappia =(7 nidificazioni) & (7 nidificazioni), mai provato con 21
Vuoi Approfondire?