Finne Nth Forekomst av en karakter

June 5  by Eliza

Barry finner ofte seg selv som ønsker å identifisere Nth forekomsten av et tegn i en tekststreng. Han vet han kan bruke søke og finne regnearkfunksjoner for å finne en innledende forekomst, men er usikker på hvordan du skal finne, si, den tredje forekomsten av bokstaven "B" i en tekststreng.

Egentlig kunne SØK funksjonen brukes til å finne ønsket forekomst, på følgende måte:

= SEARCHB ("b", G20, (SEARCHB ("b", G20, (SEARCHB ("b", G20,1) 1)) + 1))

Legg merke til hvordan den SEARCHB funksjonen brukes i en nestet måte. Formelen angir hva som blir søkte på (bokstaven "b") og antall hekkende nivåer indikerer hvilken forekomst i cellen du ønsker å finne. Formelen gir posisjonen til det ønskede tegn i cellen.

Problemet med en slik formel, selvfølgelig, er at det er vanskelig å vedlikeholde og kan raskt få ubrukelig hvis du ønsker å finne, si, den syvende forekomst.

En mer fleksibel formel vil være følgende:

= FINN (CHAR (1), ERSTATNINGS (A1, "B", CHAR (1), 3))

Denne formelen undersøker verdien i A1. Det erstatter CHAR (1) kode for den tredje forekomsten av "B" i cellen. FINN-funksjonen ser deretter innen den resulterende strengen for posisjonen der CHAR (1) oppstår. Hvis ønsket forekomst ikke eksisterer, så formelen returnerer en #VERDI feil.

Hvis du foretrekker det, kan du opprette en brukerdefinert funksjon som vil se etter Nth posisjon av en karakter. Følgende er en veldig enkel makro som tar tre argumenter: Strengen skal søkes, teksten å matche, og ønsket posisjon.

Funksjon FindN (sFindWhat As String, _
sInputString As String, N As Integer) As Integer
Dim J As Integer

Application.Volatile
FindN = 0
For J = 1 Til N
FindN = InStr (FindN + 1, sInputString, sFindWhat)
Hvis FindN = 0 Then Exit For
Neste
End Function

Funksjonen er store og små bokstaver i hva den søker etter, og den returnerer posisjonen innenfor den angitte strengen hvor oppstår sFindWhat verdi. Hvis det ikke kan oppstå ved angitte forekomsten, og deretter funksjonen returnerer en 0. Det følgende viser hvordan funksjonen kan brukes i et regneark:

= FindN ("b", C15,3)

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (3324) 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: Finne Nth Forekomst av en karakter.