Forum di Excel e VBA, per condividere esperienze e risolvere problemi su: Excel, Word, Access, Power Point, Microsoft Office, macro, Visual Basic e Visual Studio.
Funzione logica SE di Roberto (utente non iscritto) data: 30/01/2016 14:43:30
Salve sono nuovo del forum e profano di exel. Mi servirebbe un aiutino. Non riesco ad inserire la funzione logoca "SE" in una cella. Mi spiego meglio, volendo mettere nella cella B1 la funzione =Se(A1=C1:C20;"D1:D20";"")come test logico vero non mi da il contenuto tra le celle D1:D20 ma letteralmente mi scrive D1:D20. Grazie in anticipo per le risposte e chiedo scusa se ho violato il regolamento.
di alfrimpa data: 30/01/2016 15:36:03
Ciao Roberto il tuo quesito, almeno a me, non è chiaro.
La formula ti restituisce D1:D20 perchè lo hai messo tra virgolette e quindi viene riconosciuta come una stringa fissa.
Se A1=C1:C20 è VERO cosa deve restituire la funzione; questa può restituire un unico risultato e non un intervallo.
Allega un file di esempio dove mostri la situazione di partenza ed il risultato che vuoi ottenere (inserito manualmente in B1).
Alfredo
di Mohican1989 data: 30/01/2016 15:45:11
Ciao Roberto,
Prima di tutto se alleghi un file con il risultato di quello che vorresti ottenere(ovviamente senza usare la formula che non riesci a costruire ma indicandone solo i dati ed il risultato che vorresti ottenere) capiamo meglio.
Nelle formule di excel come nella maggior parte dei linguaggi di programmazione tutto ciò che è contenuto all interno di virgolette / doppi apici è considerato come un valore di testo.
Nonostante la formula di per se sia errata, probabilmente il primo valore è effettivamente VERO e la formula ti restituisce ciò che gli hai detto tu! Ovvero un testo e non un riferimento agli oggetti del foglio che nel tuo caso vorresti fosse il range di celle D1:D20. Se tu avessi scritto la formula =se(A1=C1:C20;CIAO;"") avrebbe dato un errore in quanto ciao non è una stringa di testo racchiusa tra "" e di certo non viene riconosciuto come valore numerico. Avresti ottenuto CIAO cosi -> =se(A1=C1:C20;"CIAO";""). Inoltre per quello che penso tu abbia in mente di fare devono essere usate delle formule così dette matriciali ma non sono un asso su questo argomento ed è meglio che ti approfondisca qualcuno di più ferrato.
EDIT: @ALFRIMPA Ciao e scusa ho semplicemente ripetuto il tuo concetto ma ci ho messo di più a scrivelo ^^ sono arrivato in ritardo di 10 minuti ! o_O
di alfrimpa data: 30/01/2016 15:51:54
Ciao Mohican
Hai precisato decisamente meglio quello che era il mio pensiero -:).
Anch'io penso che occorra ricorrere alle matriciali ma, come te, personalmente non vado molto d'accordo con le formule (se non le più semplici).
Attendiamo comunque chiarimenti da Roberto.
Alfredo
di Gianfranco data: 30/01/2016 16:29:50
ciao
dovresti usare
il valore della cella A1
viene rilevato dalla colonna C
come risultato ti da il valore corrispettivo alla colonna D
se hai più dati uguali sulla colonna invece usa
la seconda formula
ti allego un esempio
=INDICE($C$1:$D$20;CONFRONTA($A$1;$C$1:$C$20;0);2)
più risultati
=SE.ERRORE(INDICE($D$1:$D$20;AGGREGA(15;6;RIF.RIGA($D$1:$D$20)-RIF.RIGA($D$1)+1/(($C$1:$C$20=$A$1));RIGHE($C$1:C1)));"")
matriciale Ctrl maiuscolo invio