Het vinden van de eerste niet-Digit in een tekstwaarde

11/07/2016 by admin

Tony heeft een bos van gegevens in een werkblad dat bestaat uit cijfers en andere tekens. Zo zou hij een cel die bevat hebben "1234567Blue." Tony wil in staat zijn om erachter te komen het karakter positie waar de eerste niet-cijferige karakter optreedt. In het voorbeeld van de tekst "1234567Blue" Tony wil een manier om erachter te komen dat de eerste niet-cijferige karakter is op positie 8.

Er zijn twee belangrijke manieren om de waarde te krijgen die je wilt. De eerste is een array formule gebruiken om de positie te berekenen. De volgende matrixformule (ingevoerd met Ctrl + Shift + Enter) werken in de meeste gevallen:

= MATCH (TRUE, ISERROR (WAARDE (MID (A1, RIJ (INDIRECT ("1:" & LEN (A1))), 1))), 0)

De enige gevallen waarin deze matrixformule niet zal werken is als cel A1 is leeg of bevat een strikt numerieke waarde. Als je de lijst van dit soort gegevens (of helemaal geen gegevens) kan bevatten, dan moet u overwegen het gebruik van een iets langere matrixformule:

= IF (LEN (A1) = 0,0, MIN (ALS (1 * ISNUMBER (1 * MID (A1, RIJ (INDIRECT ("A1: A" &
LEN (A1))) 1)) = 0, RIJ (INDIRECT ("A1: A" & LEN (A1))) LENGTE (A1) +1))) *
(ISGETAL (A1) = false)

Vergeet niet dat, dat is één matrixformule, ingevoerd door met Ctrl + Shift + Enter. Het zal goed omgaan met gevallen waarin A1 bevat geen niet-cijferige tekens (zoals in een lege cel of een waarde, zoals "123").

Uiteraard andersom kan omgaan vinden van de positie van de eerste niet-cijfer teken moet een gebruiker gedefinieerde functie. Er zijn veel verschillende manieren waarop dergelijke macro kan worden uitgevoerd. Een van de eenvoudigste manieren om macro voeren is om gewoon doorlopen elk karakter in welke wordt doorgegeven aan de macro. Als een teken is gevonden dat is buiten de ASCII-code bereik voor cijfers (48-57), dan weet je dat je de eerste positie hebt gevonden. De volgende macro toont een manier om dit soort techniek do:

Functie FirstNonDigit (str As String)
Dim iChar As Integer
Dim iPos As Integer
Dim J As Integer

Application.Volatile
iPos = 0
Voor J = 1 To Len (str)
iChar = Asc (Mid (str, J, 1))
Als iChar <= 47 Of iChar> = 58 Dan
iPos = J
Exit voor
End If
Volgende J
FirstNonDigit = iPos
End Function

Om de functie te gebruiken, gewoon gebruik maken van een formule zoals deze in het werkblad:

= FirstNonDigit (A1)

Als de cel u verwijzing leeg is of als het bevat alleen cijfers, dan is de functie een 0 waarde.

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (3364) is van toepassing op Microsoft Excel 97, 2000, 2002 en 2003. U kunt een versie van deze tip voor de ribbon-interface van Excel (Excel 2007 en later) vindt u hier: Het vinden van de eerste niet-Digit in een tekstwaarde .

Related Posts