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 retourner
false code> si des sous-chaînes sont répétées, sinon il va Retour
true code>. Si vous ne recherchez que certaines substrings, il peut être facilement modifié.