|
Login
  • Page:
  • 1
  • 2

TOPIC: Inversione dati elenco su due colonne

Inversione dati elenco su due colonne 7 years 10 months ago #8401

  • Canapone
  • Canapone's Avatar
  • OFFLINE
  • Platinum Boarder
  • Posts: 1346
  • Thank you received: 160
  • Karma: 108
Ciao,

=INDICE($B$6:$B$25;PICCOLO(SE($A$6:$A$25=$J8;RIF.RIGA($A$6:$A$25)-5);COLONNE($A$1:A$1)))

Si tratta di un indice che va a pescare in B6:B25

L'indice ha due argomenti indice(range ;quale riga)

Il secondo argomento richiede la forma matriciale.

Il segmento SE($A$6:$A$25=$J8 produce una serie di 1/0 (vero falso) a seconda che trovi nell'intervallo A6:A25 la corrispondenza con j8. Il tuo numero di serie

la matrice di 0/1 è composta da 20 elementi

{0;0;1;0.....0}


Rif.riga(A$6:A$25)-5 produce una matrice di 20 numeri. Da 1 a 20

Potevo semplicemente scrivere Rif.riga(A$1:A$20) 20 numeri, le 20 posizioni che INDICE
può scegliere in B6:B25

{1;2;3....20}

questi 20 numeri vengono moltiplicati con la prima matrice di 1/0 prodotta da SE($A$6:$A$25=$j8

Dal prodotto rimane una matrice di numeri del tipo di 20 posizioni.

{1;0;3..;9;0;0;0..} i numeri diversi da 0 sono le posizioni (il primo posto, il nono posto nell'intervallo A6:A25 dove si è verificata la corrispondenza.

Entra in gioco PICCOLO che sceglie fra questi numeri il più piccolo

=COLONNE($A$1:$A1)=1

poi il secondo

=COLONNE($A$1:$B1)=2

Se provi a copiare questa formula verso destra ottieni 1 2 3...

Ho piazzato la formula dentro val.errore.

La formula è uno standard: in rete troverai centinaia di esempi con INDICE...PICCOLO(SE

Saluti
Last Edit: 7 years 10 months ago by Canapone.
The administrator has disabled public write access.
The following user(s) said Thank You: AiaceT

Inversione dati elenco su due colonne 7 years 10 months ago #8402

  • AiaceT
  • AiaceT's Avatar
  • OFFLINE
  • Expert Boarder
  • Posts: 135
  • Karma: 1
Mille grazie canapone!
Me lo studio in modo da trovargli poi altri campi di applicazione.
AiaceT
excel 2003 su Windows Xp Sp3
The administrator has disabled public write access.

Inversione dati elenco su due colonne 7 years 10 months ago #8409

  • melgae58
  • melgae58's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 5
  • Thank you received: 4
  • Karma: 0
Se vi può interessare ho sviluppato una formula che utilizza cerca.verticale.
Vi allego il file.
Attachments:
The administrator has disabled public write access.
The following user(s) said Thank You: AiaceT

Inversione dati elenco su due colonne 7 years 10 months ago #8410

  • AiaceT
  • AiaceT's Avatar
  • OFFLINE
  • Expert Boarder
  • Posts: 135
  • Karma: 1
Melgae avendo excel 2003 la formula mi restituisce #NOME perchè credo non conosca la funzione xlfn.IFERROR.
Con cosa va sostituita? Se(VAL.err( ?
Grazie per una tua risposta

RISOLTO!
la versione 2003 di excel usa una sintassi meno evoluta per cui la formula risulta più corposa:
=SE(VAL.ERRORE(CERCA.VERT($C6;INDIRETTO(CONCATENA("$A";CONFRONTA($C6;$A$1:$A$25;0)+RIF.COLONNA(A:A)-1;":$B30"));2;FALSO));"";CERCA.VERT($C6;INDIRETTO(CONCATENA("$A";CONFRONTA($C6;$A$1:$A$25;0)+RIF.COLONNA(A:A)-1;":$B30"));2;FALSO))
e funziona perfettamente

Adesso come nel caso di canapone, ti chiedo di spiegarmi la formula così da imparare altre utili interazioni tra funzioni diverse!
AiaceT
excel 2003 su Windows Xp Sp3
Last Edit: 7 years 10 months ago by AiaceT.
The administrator has disabled public write access.

Inversione dati elenco su due colonne 7 years 10 months ago #8413

  • melgae58
  • melgae58's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 5
  • Thank you received: 4
  • Karma: 0
Ciao Aiace, purtroppo non sono molto bravo nel spiegare le cose comunque ci provo.
Il problema di cerva.vert() è che quando esegui una ricerca es. cerca.vert(02955;$A6:$B30;2;0) cerca il primo risultato utile nella colonna B cioè 8.
Per trovare il secondo valore bisognerebbe impostare la formula cerca.vert(02955;$A7:$B30;2;0) e ci trova il valore 9.
Quindi bisogna far in modi di avere una matrice scalabile che va da $a6:$b30 a $A25:$B30.
Usando =CONFRONTA($C6;$A$1:$A$25;0)ris= 6 non faccio altro che cercare il rigo utile da cercare.
con rif.colonna vado ad incrementare Il valore della matrice da A6 ad A7 per cercare il secondo valore utile di 02955.
concatenando lle seguenti stringhe "$A" & 6+0 & ":$B30" si ha come risultato "$A6:$B30"
infine con indiretto("$A6:$B30") che va a pescare il valore di quella cella.
Ti invio il file con la formola scompattata in modo da capirci meglio.
Se vuoi puoi eliminare SE(VAL.ERRORE che evita un errore nella cella, quando cerca.vert non trova il valore.
Attachments:
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Time to create page: 0.498 seconds