Søker etter en verdi å bruke en funksjon

July 20  by Eliza

Thor verk hvis det er en måte å utføre et oppslag uten å angi et spesifikt kolonnen eller raden, og som har resultatet være adressen til den celle der verdien er funnet. For eksempel, ønsker han å slå opp en verdi (for eksempel 345 eller "min tekst") og har funksjonen søk alle cellene i alle regnearkene i arbeidsboken og returnere hele adressen til cellen hvor verdien ble funnet.

Tilnærmingen du bruker vil bli diktert av området du vil søke i. Hvis du ønsker å søke på samme regneark der du vil svaret vises, så kan du bruke en formel, for eksempel følgende:

= ADRESSE (MAX (ROW (1: 5) * (A1: E5 = "min tekst")),
MAX (KOLONNE (A1: E1) * (A1: E5 = "min tekst")), 4)

Dette bør legges inn som en matriseformel (trykk Ctrl + Shift + Enter), og det eneste søker i området A1: E5. Man kan, hvis ønskelig, endre området ved å justere formelen hensiktsmessig.

Et større søk området ville være å se på en hel regneark. Det kan likevel gjøres ved hjelp av en matrise formel, for eksempel følgende:

= ADRESSE (MAX (ROW (Ark1 1: 65000) * (IF (Ark1 1: 65 000 = $ A $ 1,1,0))),
MAX (KOLONNE (Ark1 $ 1: $ 65 000) * IF (Ark1 1: 65 000 = $ A $ 1,1,0)))

Formelen forutsetter at det du leter etter er lagret i celle A1. Du bør endre Ark1 betegnelse til navnet av hva regneark du ønsker søkte.

Hvis du ønsker å søke et bredere spekter, slik som alle regnearkene i en arbeidsbok, så den beste løsningen er å bruke en makro som kaller på Finn-funksjonen i Excel.

Funksjon FindAddr (vValue Som Variant)
Dim wks Som regneark
Dim Rceii Som Range
Dim bFound Som boolsk

bFound = False
For hver wks I ActiveWorkbook.Worksheets
Med wks
Satt Rceii = .Cells.Find _
(Hva: = vValue, Sent:. = Cells (1), _
Lookin: = xlValues, lookat: = xlWhole, _
Search: = xlByRows, _
SearchDirection: = xlNext, _
MatchCase: = False)
Hvis ikke Rceii Er Ingenting Deretter
bFound = True
Exit For
End If
Avslutt med
Neste
Hvis bFound Deretter
FindAddr = wks.Name & "!" & _
rCell.Address (usann, usann)
Else
FindAddr = "Not Found"
End If
Satt wks = Nothing
Satt Rceii = Nothing
End Function

Denne funksjonen er laget for å bli kalt fra en annen makro, som passerer det hva skal søkes etter i vValue parameter. Funksjonen returnerer enten full adresse (inkludert regneark navn) i den første kampen, eller det returnerer «Not Found» hvis det var ingen kamp.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (3807) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Søke etter en verdi å bruke en funksjon.