-1
votes

Excel 2013 - Plusieurs numéros de cellule sous forme de chaîne de texte, doivent identifier le cas échéant de certaines valeurs.

J'ai reçu une grande quantité de données (et je ne peux pas y retourner et leur demander de lui fournir de manière plus utile). Il contient plusieurs chiffres dans la même cellule, séparés par un point-virgule.

  A
 +-------------------------+
1|Sats                     |
 +-------------------------+
2|92; 89; 94; 99; 100      |
 +-------------------------+
3|95; 98; 96               |
 +-------------------------+
4|99                       | 
 +-------------------------+
5|88; 95                   |
 +-------------------------+
6|99; 95; 98; 98; 100; 95  |
 +-------------------------+
7|94; 92; 91; 93           |
 +-------------------------+


9 commentaires

Avez-vous essayé quelque chose? Texte aux colonnes?


Aurait dû dire que je veux éviter le texte aux colonnes si c'est du tout possible - je ne me suis pas fait clairement, le fait que le nombre de lectures dans chaque cellule est illimité signifie que je ne peux pas simplement créer des colonnes, je n'ai pas 't sais combien de choses à faire. Pourrait être plus de cent.


(1) Le nombre de colonnes est hors de propos (2), sinon TTC, vous aurez besoin de VBA.


En outre, j'essayais de trouver quelque chose sur cette base: si (gauche ([gauche ([Stat], ((recherche (";"; ", [@ stat]))) - 1)," Y "puis à l'aide de len (gauche ( [@Stat], ((recherche (";", [@ stat]))) - 1)) Avec le milieu de sélectionner le numéro suivant, puis répétez cela pour le prochain et ainsi de suite ... mais je ne le fais pas savoir si cela peut travailler avec une chaîne de nombres illimités.


Je vais essayer de comprendre une approche VBA. Pourrait finir par poser une autre question à ce sujet, mais je ferai de mon mieux pour comprendre moi-même. Merci.


Je pense que vous voudrez probablement utiliser la fonction Split pour transmettre le contenu à un tableau, puis vérifiez si une instance de la matrice est supérieure à 94. Vous pouvez trouver des conseils sur Split ici Exceltrick.com/formulas_macros/vba-split-function


Merci. Je vais avoir une fissure à ça.


Je pense que je pourrais supprimer cette question. Pas sûr que cela ne bénéficiera d'aucun autre utilisateur. Merci tout le monde.


@RolloTreadway Voir mon Répondre pour une formule comme alternative à VBA.


5 Réponses :


0
votes

Un moyen serait d'utiliser PowerQuery (en supposant que vous êtes un de 2013 ou une version ultérieure). Pour ce faire, sélectionnez vos données, accédez aux données> à partir de la table / plage. La fenêtre de requête de puissance s'ouvrira. Allez à Transform> Split colonne> par délimiteur. Vous pouvez couper le résultat pour supprimer des espaces en cliquant sur le format> Garniture.


4 commentaires

J'utilise 2013, mais il n'y a pas de powerquery, désolé.


@RolloTreadway Il est disponible en téléchargement gratuit de Microsoft.


Microsoft.com/en-us/download/Détails.aspx? ID = 39379 (mais oblige les droits de l'administrateur que vous n'avez peut-être pas si sur un ordinateur de travail)


Je n'ai pas de droits d'administration. Je vais avoir un mot avec ça, voir quelle est leur position.



0
votes

Placez cette colonne en C, puis choisissez cette colonne, utilisez des données-> Texte sur des colonnes et Split par point-virgule, ceci sera divisé en D ...

Après cela, à B colonne écrit = min (C1: Z1), ou vous pouvez mettre un plus grand nombre de cellules.

Puis à une colonne écrit = si (C1> 94, "Oui", "Non"). puis filtrez par une colonne.


1 commentaires

J'espérais ne pas sortir de plusieurs colonnes, car je n'ai aucun moyen de savoir combien de colonnes seront nécessaires et, dans les mêmes cas, il s'agira de quelques douzaines.



1
votes

Vous pouvez créer un UDF pour cela.

Créer un nouveau module dans VBA (ALT + F11) P>

Ensuite, utilisez le code ci-dessous: P>

=ParseAndSum(H19)<0


0 commentaires

1
votes

Basé sur ce Réponse , vous pouvez utiliser la formule de tableau ci-dessous (N'oubliez pas de Ctrl < / kbd> + shift + entrer !) dans la cellule b2 pour renvoyer un true ou false < / code> Si votre liste de numéros contient un numéro de moins que 94 : xxx

Vous pouvez alors faire glisser cela dans la colonne B et que cela devrait fonctionner, cependant, Vous devrez peut-être également remplacer les espaces entre vos délimiteurs ; de sorte qu'il s'agit d'une liste continue dans chaque cellule, par exemple 92; 89; ...


1 commentaires

C'est exactement ce que je visais! (Bien que je vais aussi essayer d'apprendre la chose divisée VBA, car je pense que cela sera très utile à l'avenir). Ça marche parfaitement. Merci beaucoup. (Également, plutôt que de remplacer l'espace, j'ai changé ";" à ";". ".)



0
votes

Je suis assez certain que vous avez la fonction filterxml code> en 2013.

Vous pouvez l'utiliser pour diviser la chaîne, puis le tester dans la formule matrice forte> : P>

=OR(FILTERXML("<t><s>"&SUBSTITUTE(A2,";","</s><s>")&"</s></t>","//s")<94)


0 commentaires