
Általános képlet
=IF(VLOOKUP(id,data,1,TRUE)=id, VLOOKUP(id,data,col,TRUE), NA())
Összegzés
Nagy adatkészletek esetén a pontos egyezésű VLOOKUP fájdalmasan lassú lehet, de a VLOOKUP gyors megvilágítását két VLOOKUPS használatával végezheti el, az alábbiakban leírtak szerint.
Megjegyzések:
- Ha kisebb adathalmaz van, akkor ez a megközelítés túlzott. Csak akkor használja nagy adathalmazokkal, ha a sebesség valóban számít.
- A trükk működéséhez az adatokat a keresési érték szerint kell rendezni.
- Ez a példa megnevezett tartományokat használ. Ha nem nevezett tartományokat akar használni, akkor ehelyett abszolút referenciákat használjon.
A pontos egyezésű VLOOKUP lassú
Ha a VLOOKUP-ot "pontos egyezési módban" használja nagy adatkészleten, akkor ez valóban lelassíthatja a munkalap munkájának számítási idejét. Mondjuk 50 000 vagy 100 000 rekord esetén a számítás perceket vehet igénybe.
A pontos egyezést úgy állítja be, hogy negyedik argumentumként a FALSE vagy a null értéket adja meg:
=VLOOKUP(val,data,col,FALSE)
A VLOOKUP ebben a módban azért lassú, mert minden adatot meg kell vizsgálnia az adatkészletben, amíg egyezést nem talál. Ezt néha lineáris keresésnek nevezik.
A hozzávetőleges meccsű VLOOKUP nagyon gyors
Hozzávetőleges mérkőzés módban a VLOOKUP rendkívül gyors. A hozzávetőleges egyezésű VLOOKUP használatához az első oszlop (a keresési oszlop) szerint kell rendezni adatait, majd meg kell adnia az IGAZ értéket a 4. argumentumhoz:
=VLOOKUP(val,data,col,TRUE)
(A VLOOKUP alapértelmezés szerint igaz, ami ijesztő alapértelmezés, de ez egy másik történet).
Nagyon nagy adatsorok esetén a hozzávetőleges egyezésű VLOOKUP-ra váltás drámai sebességnövekedést jelenthet.
Szóval, nincs értelme, igaz? Csak rendezze az adatokat, használjon hozzávetőleges egyezést, és kész.
Nem olyan gyorsan (heh).
A "közelítő egyezés" módban a VLOOKUP problémája a következő: A VLOOKUP nem jelenít meg hibát, ha a keresési érték nem létezik. Rosszabb esetben az eredmény teljesen normálisnak tűnhet, annak ellenére, hogy teljesen helytelen (lásd a példákat). Nem olyasmi, amit meg akar magyarázni a főnökének.
A megoldás az, hogy kétszer használjuk a VLOOKUP-ot, mindkét alkalommal hozzávetőleges módban:
=IF(VLOOKUP(id,data,1,TRUE)=id, VLOOKUP(id,data,col,TRUE), NA())
Magyarázat
A VLOOKUP első példánya egyszerűen megkeresi a keresési értéket (az ebben a példában szereplő azonosítót ):
=IF(VLOOKUP(id,data,1,TRUE)=id
és csak akkor adja vissza az IGAZ értéket, ha a keresési érték megtalálható. Ebben az esetben
a képlet ismét hozzávetőleges módban futtatja a VLOOKUP-ot, hogy lekérdezzen egy értéket a táblából:
VLOOKUP(id,data,col,TRUE)
Nincs veszélye annak, hogy hiányzik a keresési érték, mivel a képlet első része már ellenőrizte, hogy ott van-e.
Ha a keresési érték nem található, akkor az IF függvény "value if FALSE" része fut, és tetszőleges értéket visszaadhat. Ebben a példában NA () -t használunk, # N / A hibát adunk vissza, de küldhet olyan üzenetet is, mint "Hiányzó" vagy "Nem található".
Ne feledje: az adatokat keresési érték szerint kell rendezni, hogy ez a trükk működhessen.