Gwella swyddogaeth VLOOKUP

Cynnwys

Sut i bacio parasiwt yn iawn?

Budd-dal. Argraffiad 2, diwygiedig.

Gadewch i ni ddweud bod gennym y tabl gorchmynion canlynol:

Gwella swyddogaeth VLOOKUP

Mae angen inni wybod, er enghraifft, beth oedd swm trydydd gorchymyn Ivanov neu pryd y gweithredodd Petrov ei ail fargen. Ni all y swyddogaeth VLOOKUP adeiledig ond chwilio am ddigwyddiad cyntaf yr enw olaf yn y tabl ac ni fydd yn ein helpu. Cwestiynau fel “Pwy oedd rheolwr archeb rhif 10256?” bydd hefyd yn aros heb ei ateb, tk. nid yw'r VLOOKUP adeiledig yn gallu dychwelyd gwerthoedd o golofnau i'r chwith o'r un chwilio.

Mae'r ddwy broblem hyn yn cael eu datrys mewn un swoop – gadewch i ni ysgrifennu ein swyddogaeth ein hunain a fydd yn edrych nid yn unig am y cyntaf, ond, yn yr achos cyffredinol, am y Nfed digwyddiad. Ar ben hynny, bydd yn gallu chwilio a chynhyrchu canlyniadau mewn unrhyw golofnau. Gadewch i ni ei alw, dywedwch, VLOOKUP2. 

Agorwch y Golygydd Sylfaenol Gweledol trwy wasgu ALT+F11 neu drwy ddewis o'r ddewislen Gwasanaeth – Macro – Golygydd Sylfaenol Gweledol (Offer - Macro - Golygydd Sylfaenol Gweledol), mewnosod modiwl newydd (dewislen Mewnosod – Modiwl) a chopïwch destun y swyddogaeth hon yno:

Swyddogaeth VLOOKUP2(Tabl Fel Amrywiad, ChwilioColofnNum Cyhyd, ChwilioGwerth Fel Amrywiad, _ N Cyhyd, CanlyniadColofnNum Mor Hir) Dim i Cyn Hir, Cyfrif Cyn Hir Dewiswch Achos MathName(Tabl) Achos "Ystod" I = 1 I Tabl.Rows .Count If Table.Cells(i, SearchColumnNum) = SearchValue Yna iCount = iCount + 1 Diwedd Os Os iCount = N Yna VLOOKUP2 = Tabl.Cells(i, CanlyniadColumnNum) Gadael Ar Gyfer Diwedd Os Nesaf i Achos "Amrywiad()" Ar gyfer i = 1 I UBound(Tabl) Os Tabl(i, SearchColumnNum) = SearchValue Yna iCount = iCount + 1 Os iCount = N Yna VLOOKUP2 = Tabl(i, CanlyniadColofnNum) Gadael Ar Gyfer Diwedd Os Nesaf i Diwedd Dewiswch Diwedd Swyddogaeth  

Caewch y Golygydd Visual Basic a dychwelyd i Excel.

Nawr drwodd Mewnosod – Swyddogaeth (Mewnosod — Swyddogaeth) yn y categori Diffiniwyd y Defnyddiwr (Defnyddiwr Diffiniedig) gallwch ddod o hyd i'n swyddogaeth VLOOKUP2 a'i ddefnyddio. Mae cystrawen y swyddogaeth fel a ganlyn:

=VLOOKUP2(tabl; number_of_column_where_rydyn ni'n edrych amdano; lookup_value; N; number_of_column_from_to_get_value)

Nawr nid yw cyfyngiadau'r swyddogaeth safonol yn rhwystr i ni:

Gwella swyddogaeth VLOOKUP

PS Diolch yn arbennig i The_Prist am wella'r swyddogaeth fel y gall chwilio mewn llyfrau caeedig.

  • Dod o hyd i ddata a'i amnewid o un tabl i'r llall gan ddefnyddio'r swyddogaeth VLOOKUP
  • “VLOOKUP Chwith” gan ddefnyddio'r swyddogaethau MYNEGAI a MATCH

 

Gadael ymateb