0
votes

Copier les valeurs entre deux caractères VBA

J'ai un problème avec la valeur de copie entre les mêmes caractères. Exemple ci-dessous.

Disons que nous avons du texte comme celui-ci: xxx

est une option pour obtenir la valeur "1123444" de cette chaîne?

Je veux copier des valeurs après 4 caractères survenant comme "|".

dans un autre mot:

Valeur de la copie entre 2e "|" et 3ème "|".

La longueur de la chaîne n'est pas la même.

Je serai vraiment reconnaissant pour tous les conseils et votre aide.


0 commentaires

4 Réponses :


2
votes
Debug.Print Split(Application.Trim(Replace(<your_string>, "|", " ")), " ")(2)

1 commentaires

Et si la chaîne est comme ça? "Asd ||| qweeee || 1123444 | 45555512345 | SWDQ |" Il y a des valeurs vierges entre "|". Macro ignorant des valeurs vides, je ne veux pas. Des conseils?



1
votes
Dim s As String, items
s = "asd|qweeee|1123444|45555512345|swdq|"

items = Split(s, "|")
MsgBox items(2)

3 commentaires

Ça marche pour moi. Parfait! C'est ce que je cherchais. Merci beaucoup! :)


Et si la chaîne est comme ça? "Asd ||| qweeee || 1123444 | 45555512345 | SWDQ |" Il y a des valeurs vierges entre "|". Macro ignorant des valeurs vides, je ne veux pas. Des conseils?


@Grezegorz: Si vous ne pouvez pas définir une règle capable d'être comprise par des personnes humaines et votre chaîne ne ressemblera pas à la même chose, seul Dieu peut le faire, pas Excel VBA ... Pour votre dernier numéro, essayez ceci: Dim X sous forme de chaîne x = "asd ||| qweeee || 1123444 | 45555512345 | SWDQ |" débogage.Print (Remplacer (x), "|||", "|"), "||", "|"), "|") (2) . Je ne sais pas si vous pouvez comprendre le code d'ici. Je vais essayer une réponse ...



0
votes

Pour votre dernière demande, utilisez le code suivant: xxx

mais, si votre chaîne contenant "| | | Provient d'une fonction qui n'a pas pu trouver des éléments et des espaces introduits "" séparés par "|", il est préférable de savoir où de cette chaîne est extraite et l'utiliser comme il est, sans la formule de saucisse. Juste le diviser par "|" et renvoyez le nombre approprié d'élément de tableau en fonction de votre enquête sur l'origine de la chaîne.


0 commentaires

0
votes

Il apparaît comme si vous ne voulez pas inclure des segments vides lors de la détermination duquel retourner.

qui étant le cas, vous pouvez également utiliser une expression régulière également: P>

Function extrSegment(S As String, Optional Segment As Long = 4, Optional Delimiter As String = "|") As String
    extrSegment = Split(S, Delimiter)(Segment-1) 'array will be 0-based
End Function


4 commentaires

Qu'entendez-vous par «Ignorer || ? Qu'en est-il de ||| ? Qu'attendriez-vous pour la sortie de la ligne 3 ci-dessus?


Par exemple, nous avons du texte comme celui-ci: "Ed1 | 22222 | 123123123 | FFFF | DDDD" et "ED1 | 22222 || FFFF | DDDD" et je veux me donner "FFFF" des deux conseils? J'utilise la formule de votre feuille de travail, c'est mieux pour moi.


@Grzegorz Voir mon édition


J'ai vérifié et j'ai maintenant l'air vraiment génial. Merci Ron! J'apprécie beaucoup :)