J'utilise Excel VBA pour valider la précision d'une chaîne. Je dois m'assurer qu'une sous-chaîne variable n'est pas dupliquée. J'ai utilisé une méthode d'ailleurs volumineux, mais il manque des instances où plus d'une sous-chaîne a été utilisée. La première sous-chaîne passait, mais elle ne recette pas pour vérifier la sous-chaîne suivante.
Function findOccurancesCount(chkstring, phrase)
OccurCount = 0
y = 1
Do
foundPosition = InStr(y, chkstring, phrase) 'searching from i position
If foundPosition > 0 Then 'substring is found at foundPosition index
OccurCount = OccurCount + 1 'count this occurance
y = foundPosition + 1 'searching from x+1 on the next cycle
End If
Loop While foundPosition <> 0
findOccurancesCount = OccurCount
End Function
3 Réponses :
Pour compter le nombre d'occurrences d'une phrase dans chkstring, vous pouvez utiliser cette fonction puis vous pouvez appeler comme ceci, ou une autre manière, telles que la boucle de phrases, en fonction de Combien de phrases que vous avez l'intention de rechercher: p>
Désolé, de vérifier chaque phrase, changez votre elsesif code> sur Individuulal si ... finnez si code> instelements afin que chaque phrase soit vérifiée. elseIf code> ne sera pas coché si une condition est appariée plus tôt dans le si code> chaîne
Merci Raysinnz, je pense que cela le fera. J'essayais probablement de le rendre plus compliqué qu'au besoin d'être
Essayez cette fonction si vous avez besoin de quelque chose de similaire à ce que vous avez déjà
Function findOccurancesCount(chkstring, phrase)
Dim residualString As String
Dim OccurCount As Integer
OccurCount = 0
residualString = chkstring
Do
foundPosition = InStr(1, residualString, phrase) 'search phrase in residualString
If foundPosition > 0 Then 'substring is found at foundPosition index
OccurCount = OccurCount + 1 'count this occurance
residualString = Replace(residualString, phrase, "", foundPosition, 1) 'remove found phrase from residualString
End If
Loop While foundPosition <> 0 'loop until no phrase is found
findOccurancesCount = OccurCount
End Function
Voici une fonction qui utilise des expressions régulières pour voir si un mot de la chaîne se produit plus d'une fois.
S'il n'y a pas de mots en double -> Si vous ne recherchez que quelques mots-clés pour ne pas être Dupliqué, puis changez le motif: p> true code>, sinon faux code> p>
Que voulez-vous pour la sortie? Votre question indique que vous souhaitez valider une chaîne, ce qui implique une simple réponse binaire; Mais votre code suggère que vous recherchez quelque chose de différent.
Il y a un aspect binaire, mais il y a plusieurs variables. La passe est si l'une des sous-chaînes clés ne sont que prévues une fois dans la chlkstring. L'échec est si l'une des sous-chaînes clés est dupliquée dans le chlkstring
Ensuite, si vous voulez juste un
true code> /false code> réponse, le code que je viens de simplement revenir retournerfalse code> si des sous-chaînes sont répétées, sinon il va Retourtrue code>. Si vous ne recherchez que certaines substrings, il peut être facilement modifié.