Ricerca tabella Excel con indici in più colonne


2

Ho una tabella in Excel che assomiglia a questo:

Test1   100 test2   200
Test3   110 test4   210
Test5   120 test6   220

Voglio una funzione che, dato il test 1 come input, restituirà 100 E dato il test 2 restituirà 200

LOOKUP, (V / H) LOOKUP e INDEX insistono tutti su un singolo array contiguo per la colonna dell'indice.


2
Stai cercando una funzione Excel 'standard' o vba è OK? Il mio primo suggerimento sarebbe quello di scrivere una piccola funzione vba che usi find per trovare la tua cella 'testN' e riportare la colonna della cella 1 a destra.
Dave Parillo,

1
Ti consiglierei di considerare sempre prima la struttura dei tuoi dati. Sembra che dovresti avere una colonna identificatore del test e quindi la colonna con il valore numerico specificato di ciascun test. In che modo puoi modificare la modalità di generazione della tabella? Sembra che funzionerebbe meglio che cercare di ospitare la tua tabella corrente. Oppure guarda le risposte qui sotto ovviamente.
mindless.panda,

Il problema con VBA è che non l'ho mai usato. Quanto è difficile integrarsi con le funzioni integrate?
Matthew Scouten,

Test2 può apparire nella prima colonna .. o tutti i valori di ricerca sono unici?
Mark Nold,

Un valore di ricerca dovrebbe essere unico.
Matthew Scouten,

Risposte:


1

Supponendo che i valori che desideri vengano restituiti sono sempre numerici Penso che funzionerebbe:

=IFERROR(VLOOKUP(INPUTCELL,$A$1:$B$3,2,0),0)+IFERROR(VLOOKUP(INPUTCELL,$C$1:$D$3,2,0),0)

Funzionerà solo in Excel 2007, ma può essere modificato per il 2003. Potrebbe esserci un modo più sexy, ma è il primo a cui ho pensato. Se 'Test 1' è presente in entrambe le colonne, ad esempio, aggiungerà entrambi i valori corrispondenti.


Risposta aggiornata: come hanno suggerito altri commentatori, rivaluterei il layout del foglio di calcolo. Supponendo che non sia possibile modificarlo, l'unica soluzione scalabile che vedo è tramite VBA. Non sono un esperto di VBA, quindi ci sono probabilmente modi più efficienti per codificare questa soluzione, ma questo è quello che ho ottenuto:

  1. Premi Alt + F11 per aprire l'editor VBA.
  2. Dall'interno dell'editor VBA fai clic su Inserisci> Modulo.
  3. Incolla il seguente codice:
 Funzione pubblica GetValue (rngCerca come intervallo, rngInput come intervallo) Come variante
      Cella debole come variante
      Per ogni cella in rngSearch
        Se cell.Value = rngInput.Value Quindi
          GetValue = cell.Offset (0, 1)
          Esci per
        Finisci se
      Il prossimo
 Fine funzione

4 Per utilizzare il tipo di funzione "= GetValue (SearchRange, InputCell)" (senza virgolette) nella cella desiderata con InputCell che è la cella che dice 'Test 1', 'Test 2', ecc. E SearchRange è l'area che stanno cercando.

Sarà necessario che le macro siano abilitate affinché ciò funzioni.


Se fossero davvero 2 colonne che avrebbero funzionato, ma i dati effettivi ne hanno circa 12. un po 'ingombrante.
Matthew Scouten,

1

Se usi la funzione IF () è un compito banale ottenere quello che stai chiedendo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.