VBA Excel : Comment faire pour extraire le numéro d'une chaîne de caractères?
Je veux extraire les numéros à partir d'une chaîne. Les chaînes de caractères sont écrits dans chaque cellule de ce genre.
1, 1
1, 2
1, 3
Chiffres sont tout simplement divisé par des virgules.
Comment puis-je extraire les numéros d'eux dans Excel VBA?
Merci beaucoup.
Vous pouvez utiliser
Qu'est-ce que la chaîne souhaitée résultat de la ci-dessus? 11 12 13?
Split(value, ",")
- ce qui va retourner un tableau de type variantQu'est-ce que la chaîne souhaitée résultat de la ci-dessus? 11 12 13?
OriginalL'auteur js0823 | 2011-11-11
Vous devez vous connecter pour publier un commentaire.
Si j'ai reçu votre question, vous avez "1 à 1" dans la cellule A1, "1, 2" dans la cellule A2, "1 à 3" dans la cellule A3.
Si vous voulez respectivement les chiffres avant la virgule dans les cellules B1, B2 et B3, et les chiffres après la virgule dans les cellules C1, C2 et C3, vous pouvez effectuer les opérations suivantes:
SOLUTION VBA:
NON solution VBA:
Insérer la formule suivante dans la cellule B1:
=VALEUR(GAUCHE(A1,FIND (","; A1)-1))
Insérer la formule suivante dans la cellule C1:
=VALEUR(DROITE(A1; NBCAR(A1)-FIND (","; A1)-1))
Copier les cellules B1 et C1
Coller dans les cellules B2 C3
Si vous voulez avoir des chaînes dans les colonnes B et C (au lieu d'avoir les numéros de), vous pouvez déposer la fonction de VALEUR, et les formules dans les cellules B1 et C1 sera
=GAUCHE(A1,FIND (","; A1)-1)
=DROITE(A1; NBCAR(A1)-FIND (","; A1)-1)
=LEFT(A1;FIND(",";A1)-1)
devrait être=LEFT(A1,FIND(",",A1)-1)
et ainsi de suiteJ'ai un italien installation d'Excel, et les arguments de la fonction sont séparés par des points-virgules. Je pensais que ça fonctionnait de la même manière dans une autre langue. Mon mauvais. Eh bien au moins je viens d'apprendre quelque chose de nouveau sur Excel 🙂
Un peu non, mais vous vous rendez compte que lngLeft et lngRight sont déclarés ici comme une variable, non? VBA ne vous permet pas de déclarer les variables, comme vous êtes en train de faire dans le code. 🙂
Je ne pouvais pas vraiment comprendre ce que vous avez dit, puis j'ai fait une recherche sur internet et a découvert que si je déclare mes variables de cette manière: Dim lngLeft, lngRight, lngCommaPos Tant lngLeft et lngRight sera dimensionnée en tant que Variante. Avez-vous dire que je suis censé déclarer les variables Dim lngLeft tant, lngRight tant, lngCommaPos Tant? @Issun
Vous avez obtenu, à la perfection. Dans visual basic, vous pouvez omettre tous les "Tant"s, mais en VBA, vous avez à mettre chacun dans il y, sinon, la dernière variable est déclarée comme le type que vous vouliez. 🙂 Non pas que votre code ne fonctionne pas du tout, mais j'ai pensé que vous ne saviez pas que depuis que vous avez été en utilisant le préfixe "gnl". 🙂
OriginalL'auteur Bruno 82
*Hypothèse est que le résultat souhaité est 11, 12, et 13.
Ci-dessous ont été écrits comme des fonctions, mais peut être facilement modifié pour les sous routines de la place. Je ne veux pas entrer dans les plages de réglage et juste se concentrer sur la fonction.
Si vos données sont seulement des chiffres séparés par des virgules et des espaces, alors il suffit d'utiliser le remplacer:
Si vous voulez une version plus sophistiquée de la fonction qui va extraire tous les numéros indépendamment de ce que peut être d'autre dans la chaîne, voici mon RegexExtract fonction. Par défaut, je l'ai configuré de sorte qu'il sera virgules séparer tous les enregistrements, mais vous pouvez spécifier comme aucun:
Voici la fonction:
OriginalL'auteur aevanko
I vous ne voulez pas utiliser VBA vous pouvez aussi utiliser des Colonnes de Texte, voir: http://support.microsoft.com/kb/214261
OriginalL'auteur LeasMaps