Numeri: trova una cella in una tabella (ricerca) utilizzando più criteri

1

Uso Numbers '09 (ma posso aggiornarlo se necessario). Come posso trovare un valore utilizzando più criteri?

Diciamo che ho una tabella dei voli, con le colonne per la data del volo, il numero del volo (incluso il codice compagnia aerea), il codice di prenotazione, ecc .; e un'altra tabella che contiene i guadagni in un programma frequent flyer (miglia premio, miglia elite, dollari elite) per ogni compagnia aerea, intervallo di date e codice di prenotazione. Per ogni volo (riga) nella prima tabella, ho bisogno di trovare la riga nella seconda tabella che corrisponde al codice compagnia aerea dal numero del volo, la data del volo e il codice di prenotazione. Prenderò quindi il valore in una colonna specifica di quella riga e moltiplicherò per la distanza del volo per ottenere i guadagni per quella categoria.

Esempio:

La tabella 1 ("Voli") contiene colonne come:

" voli "

La tabella 2 ("Per-Airline") ha colonne come:

" per-Airline "

Per la colonna "EQM proiettato" per un volo (ad es. volo nella riga 3, il secondo volo), voglio trovare la riga nella Tabella 2 ("Per-compagnia aerea") dove:

  • Il codice compagnia aerea corrisponde al codice all'inizio del numero del volo (ad es. "cx")
  • La colonna "Date voli da" è vuota o non precedente alla data del volo
  • La colonna "Date voli a" è vuota o non oltre la data del volo
  • La colonna "Codice prenotazione" contiene il codice di prenotazione del volo

Nell'esempio, le corrispondenze della riga 96.

Quindi, devo prendere il valore nella colonna "EQM" di quella riga (1.5) e moltiplicarlo per il valore nella colonna "Flight Miles". Il risultato è "EQM proiettato".

Come potrei fare questo? Ho letto le descrizioni delle funzioni probabili (CERCA, CERCA, MATCH, INDICE) ma posso solo vedere come cercare usando un singolo criterio.

    
posta jetset 23.10.2017 - 02:36
fonte

1 risposta

2

Ora ho funzionato, estendendo le tecniche discusse altrove (che utilizza una colonna aggiuntiva per contenere un aggregato dei criteri di corrispondenza).

Per gestire gli intervalli di date, ho creato una tabella di ricerca aggiuntiva che assegna un valore singolo arbitrario a ciascun intervallo di date:

Nellatabelladiricercadelleentrateper-airline,hoaggiuntounacolonnainpiùpercontenereilDateCodeperl'intervallodidate,utilizzandoVLOOKUPrispettoallacolonnadata-from,concorrispondenzaesatta,poichétrovailvalorepiùgrandecheèpiùpiccolorispettoalcriterio:

Eun'altracolonnainpiùpercontenereunastringadiricercacalcolatacheèunaconcatenazionedellacompagniaaerea,icodicidiprenotazioneeilcodicedell'intervallodidate:

Quindi,nellatabellaprincipale(checontieneivolieffettuati),hoaggiuntounacolonnaaggiuntivapercontenerelastringadiricerca,cheèunaconcatenazionedellacompagniaaerea,ilcodicedell'intervallodidatesoloseapplicabileeilcodicediprenotazioneconasterischisuentrambiilaticomecaratterijollyeun'altracolonnaaggiuntivapercontenerelarigacalcolatadellatabelladiricercapercompagniaaerea:

(Naturalmente,avreipotutoevitarediaggiungereduecolonneinpiùinentrambeletabellerendendoleformulepiùcomplesse,mahooptatoperunamiglioreleggibilità.)

Quindi,lecolonnedelleentrateeffettivenellatabellaprincipaleutilizzanolafunzioneLOOKUPconlarigadellatabelladiricercaperlineaaereacalcolataelacolonnaapplicabile,adesempio:

=IF($PNR'1'="", "",  ROUNDUP ( IF ( INDEX ( 'Per-Airline',  $Lookup Row '1', COLUMN ( 'RDM per $ (EXP)' ) ) > 0, INDEX ( 'Per-Airline',  $Lookup Row '1', COLUMN ( 'RDM per $ (EXP)' ) ) * 
    
risposta data 26.11.2017 - 16:11
fonte

Leggi altre domande sui tag