Correspondance similaire, mais elle n'est pas exacte des chaînes de texte dans Excel VBA projets
Bon, j'ai essayé de trouver une solution pour cela et je ne semble pas être en mesure. Je ne peux même pas décomposer le problème correctement. C'est l'idée.
J'ai deux feuilles avec de nombreuses lignes (une avec 800 et l'autre avec 300 000). Chaque ligne contient un Nom de colonne, puis en plusieurs colonnes qui contiennent des informations à propos de ce Nom. Chaque fiche dispose de différents types de renseignements.
Je veux consolider ces deux feuilles dans une fiche sur cette base Nom de la colonne, ils ont tous deux, afin de le consolider la fonction est parfaite pour ça. Maintenant, le problème est que les noms ne correspondent pas parfaitement.
Par exemple la feuille Sheet1 contient
"De La Société B. V.", "Info #1"
L'Entreprise "Total", "Info #2"
"Company Ltd", "Info #3"
et de la feuille 2 contient
"De la société et Co.", "Info #4"
"Société et Co", "Info #5"
Feuille 1 contient tous les noms qui vont être utilisés (à environ 100, mais sous des formes différentes comme indiqué ci-dessus) et de la feuille 2 contient tous ces 100 dans de multiples lignes plus des noms qui ne sont pas dans la liste des 100 et, par conséquent, je ne se soucient pas.
Comment pourrais-je faire un code VBA projet où le résultat final serait quelque chose comme ceci, fiche:
"Société", "Info #1", "Info #2", "Info #3", "Info #4", "Info #5"
pour chaque "Société" (la liste des 100)???
J'espère qu'il y est une solution pour cela. Je suis assez nouveau pour les projets VBA, mais j'ai fait quelques un codage minimal avant.
Vous avez défini type de critères pour quoi "assez similaire" signifie... Par exemple, serait-il OK pour simplement correspondance basée sur le premier mot entre les 2 feuilles??
Oui, vous avez tous les deux raison, malheureusement, le premier mot n'est pas une option. Est-il possible de trouver une longueur minimale de caractères qui correspondent entre deux chaînes de caractères, et de l'utiliser comme "nom d'Entreprise", c'est à dire d'un mot entier doit correspondre parfaitement, y compris l'espace avant et après.
Que dire de tous les mots de plus de 4 caractères à l'intérieur d'une cellule doit correspondre exactement? C'est qu'un "makable"?
... Donné en exemple ci-dessus, la cellule avec
Company Total
aurait échoué le 4-char critères, alors assurez-vous que vous êtes heureux avec cela, mais si vous êtes ok, je voudrais écrire une simple fonction VBA qui prend une cellule (ou une chaîne) et un entier (pour le nombre de charecters de match) comme entrées. Il serait alors examiner chaque mot dans la chaîne Si elle est plus longue que le nombre de caractères, puis ajoutez-les sur une chaîne de sortie - puis vous pouvez comparer les 2 cellules valeurs une fois qu'ils ont déplacé par le biais de cette fonction... Seul problème est que si les mots sont dans un ordre différent dans les cellules.OriginalL'auteur Ampi Severe | 2012-11-08
Vous devez vous connecter pour publier un commentaire.
Je place la macro dans votre section PERSONNELLE, de cette façon, la macro est disponible dans toutes les feuilles de calcul. Ce faire par l'enregistrement d'un mannequin macro et sélectionnez le ranger dans le classeur de Macros Personnelles. Maintenant, vous pouvez ajouter manuellement de nouveaux macros et les fonctions de ce personnel classeur.
J'ai juste essayé celui-ci (je ne connais pas la source d'origine) et il fonctionne très bien.
La formule ressemble à ceci: =PERSONNELLES.XLSB!FuzzyFind(A1,B$1:$B 20)
Le code est ici:
OriginalL'auteur Robert Ilbrink
J'ai utilisé Robert solution et il fonctionne très bien pour moi. Je suis annonce ensemble de la solution pour les gens qui sont nouveaux pour excel, mais sait codage:
Si ce fil est vieux, mais j'ai pris un peu de code à partir d'un autre fils et essayé et ressemble solution est de donner env match. Ici, je suis en train de répondre à une colonne de la feuille sheet1, avec une colonne de la feuille sheet2:
OriginalL'auteur Garima SP
Vous pouvez Google Excel UDF de recherche Floue ou Levensthein distance. Il y a quelques UDF est flottant autour et Microsoft ne sont une recherche Floue/match add-on (quand je l'ai utilisé, c'était crash et sujettes pas intuitif).
OriginalL'auteur Robert Ilbrink
Prendre un regard sur les fonctions sur cette DDoE post. Vous pouvez générer une plus longue séquence commune de chaîne et de comparer la longueur de la chaîne d'origine. Nourrir certains connus des allumettes et quelques non-matches et voir si vous pouvez voir une ligne de démarcation claire entre eux.
Ces fonctions sont utilisées pour la comparaison, ne le trouvant pas à proximité des matchs, mais ils peuvent travailler pour vous.
OriginalL'auteur Dick Kusleika
Pas exactement sur le point, mais semblable, et les personnes atteintes d'une mon question sont susceptibles de trouver ce page lors d'une recherche.
Tâche: Une liste de patients qui ont été dans des épaves de voitures, y compris les adresses postales. Retrouver les comptes basés sur la même adresse. La liste sera d'un maximum de 120 dossiers--partielle examen manuel est réaliste.
Problème: Rue adresses sont similaires mais pas identiques, par exemple, 123 JONES LANE et 123 JONES LN ou 72 RUE PRINCIPALE #32 et 72 de la RUE PRINCIPALE # 32.
Partie de la solution est de comparer uniquement les numéros des rues. Avec une liste de taille, il est inhabituel d'avoir deux adresses différentes avec le même numéro de la rue (p. ex., 123 JONES LANE et 123, RUE PRINCIPALE).
Attention: Vous ne pouvez pas utiliser le VAL() pour tirer le numéro de la rue. Essayez avec 167 E 13 SAINT. VBA voit que comme 167^13 et écrasez-vous si vous générez à Street_Num Comme un Entier. Donc, vous devez utiliser une boucle pour tirer les chiffres dans une nouvelle chaîne et de l'arrêter à la première non-chiffre.
OriginalL'auteur RIck_R