Ho una stringa "ololo123". Ho bisogno di ottenere la posizione della prima cifra - 1. Come impostare la maschera di ricerca?VBA. Come trovare la posizione della prima cifra nella stringa
risposta
Qualcosa del genere dovrebbe fare il trucco per voi:
Public Function GetPositionOfFirstNumericCharacter(ByVal s As String) As Integer
For i = 1 To Len(s)
Dim currentCharacter As String
currentCharacter = Mid(s, i, 1)
If IsNumeric(currentCharacter) = True Then
GetPositionOfFirstNumericCharacter = i
Exit Function
End If
Next i
End Function
È quindi possibile chiamare in questo modo:
Dim iPosition as Integer
iPosition = GetPositionOfFirstNumericCharacter("ololo123")
È possibile semplificare la funzione. Non hai davvero bisogno di 'currentCharacter'; il tuo test potrebbe essere 'If IsNumeric (Mid (s, i, 1)) Then ...' – e100
@ e100 - molto vero. Rompere rende più leggibile e questo è quello che sono per rispondere a una domanda di questo livello di complessità mentre lavoro sulla base del fatto che l'OP potrebbe richiedere un codice più semplice/più chiaro per aiutare a capire =) – Rob
Se la velocità è un problema, questo verrà eseguito un po 'più veloce di Robs (noi Rob):
Public Sub Example()
Const myString As String = "ololo123"
Dim position As Long
position = GetFirstNumeric(myString)
If position > 0 Then
MsgBox "Found numeric at postion " & position & "."
Else
MsgBox "Numeric not found."
End If
End Sub
Public Function GetFirstNumeric(ByVal value As String) As Long
Dim i As Long
Dim bytValue() As Byte
Dim lngRtnVal As Long
bytValue = value
For i = 0 To UBound(bytValue) Step 2
Select Case bytValue(i)
Case vbKey0 To vbKey9
If bytValue(i + 1) = 0 Then
lngRtnVal = (i \ 2) + 1
Exit For
End If
End Select
Next
GetFirstNumeric = lngRtnVal
End Function
Si potrebbe provare regex, e quindi avresti due problemi. Il mio VBAfu non è fino al tabacco da fiuto, ma ho deciso di dargli un andare:
Function FirstDigit(strData As String) As Integer
Dim RE As Object REMatches As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = "[0-9]"
End With
Set REMatches = RE.Execute(strData)
FirstDigit = REMatches(0).FirstIndex
End Function
Poi basta chiamano con FirstDigit("ololo123")
.
+1 Vedo che avevamo simili pensieri, eri un po 'più veloce! –
sicuro al proprio ambiente, ma questo ha funzionato in Excel 2010
'Added reference for Microsoft VBScript Regular Expressions 5.5
Const myString As String = "ololo123"
Dim regex As New RegExp
Dim regmatch As MatchCollection
regex.Pattern = "\d"
Set regmatch = regex.Execute(myString)
MsgBox (regmatch.Item(0).FirstIndex) ' Outputs 5
Io in realtà sono quella funzione:
Public Function GetNumericPosition(ByVal s As String) As Integer
Dim result As Integer
Dim i As Integer
Dim ii As Integer
result = -1
ii = Len(s)
For i = 1 To ii
If IsNumeric(Mid$(s, i, 1)) Then
result = i
Exit For
End If
Next
GetNumericPosition = result
End Function
Ecco un metodo leggero e veloce che evita le aggiunte regex/di riferimento, quindi aiutare con spese generali e di trasporto dovrebbe essere un vantaggio.
Public Function GetNumLoc(xValue As String) As Integer
For GetNumLoc = 1 To Len(xValue)
If Mid(xValue, GetNumLoc, 1) Like "#" Then Exit Function
Next
GetNumLoc = 0
End Function
- 1. R: come trovare la prima cifra in una stringa
- 2. trovare la posizione del carattere nella stringa
- 3. Come ottenere l'indice della prima cifra in Stringa
- 4. Come trovare la prima lettera maiuscola nella stringa usando python
- 5. Recupero della prima cifra di un numero
- 6. Come trovare l'indice della posizione attuale nella cronologia del browser
- 7. trovare la sottostringa della stringa
- 8. Come dividere la stringa prima della prima virgola?
- 9. Come ottenere la posizione della stringa sub nella stringa in lotti
- 10. Trova la posizione della prima occorrenza di qualsiasi numero in stringa (php)
- 11. In C trovare la posizione di sottostringa in una stringa
- 12. VBA: sostituzione parte della stringa temporale
- 13. Come ottenere la prima cifra non nulla di un BigDecimal
- 14. Inserisci stringa nella posizione specificata
- 15. vba regex restituisce solo la prima corrispondenza
- 16. Ricerca della corrispondenza esatta della stringa nella riga excel utilizzando VBA Macro
- 17. Come convalidare la stringa numerica come cifra con ibernazione?
- 18. Ottenere la posizione della lettera prima capitale in una stringa utilizzando php
- 19. Trovare la posizione dell'elemento max
- 20. trovare la posizione di una sottostringa in una stringa
- 21. Trovare le date nella stringa
- 22. Come trovare la ricorsione nella tua app?
- 23. come trovare prima e dopo la stringa secondaria in una stringa
- 24. Converti la prima lettera nella stringa in maiuscolo
- 25. Octave: restituisce la posizione della prima occorrenza di una stringa in un array di celle
- 26. Come evitare la cancellazione della prima riga nella tabella (PostgreSQL)?
- 27. Trovare l'indice della colonna nella struttura di dati che contiene la stringa come valore di
- 28. Cifra e decrittografa la stringa con la chiave PHP
- 29. Get prima parola della stringa
- 30. Python trovare prima istanza di non numero zero nella lista
@Remou grazie, ho cancellato l'osservazione. – Fosco