0
votes

Excel-VBA Nombre de substrings variables dans une chaîne

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 commentaires

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


3 Réponses :


2
votes

Pour compter le nombre d'occurrences d'une phrase dans chkstring, vous pouvez utiliser cette fonction xxx

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: xxx


2 commentaires

Désolé, de vérifier chaque phrase, changez votre elsesif sur Individuulal si ... finnez si instelements afin que chaque phrase soit vérifiée. elseIf ne sera pas coché si une condition est appariée plus tôt dans le si chaîne


Merci Raysinnz, je pense que cela le fera. J'essayais probablement de le rendre plus compliqué qu'au besoin d'être



0
votes

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


0 commentaires

0
votes

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 -> true , sinon faux xxx

Entrez la description de l'image ici

Si vous ne recherchez que quelques mots-clés pour ne pas être Dupliqué, puis changez le motif: xxx


0 commentaires