Diviser une adresse dans différentes cellules

J'ai une colonne d'adresse dans ce format:

120 Lemon Street Columbus OH 92738 (Basketball Courts) 

Et je dois le diviser en: adresse (120 Lemon Street) , ville (Columbus) , état (OH) , code postal (92738) et description ((Basketball Courts))

Est-ce que je peux faire cela? Tout cela se trouve dans le même état, donc ce n'est pas un problème. Ils sont dans différentes villes / villes et ont des codes postaux différents.

Si vous savez seulement comment en faire partie, faites-le moi savoir. Toute aide est la bienvenue, merci!

User1282637, j'ai configuré un exemple pour vous montrer ci-dessous. Je ne l'ai fait que pour être un point de départ afin que vous puissiez finir avec votre propre réponse complète.

D'abord, j'ai mis en place deux listes. L'une était l'une des abréviations des états et l'autre étant tous les suffixes agréés de la rue que j'ai trouvés ici:

http://pe.usps.com/text/pub28/28apc_002.htm

Entrez la description de l'image ici

J'ai utilisé la formule que j'ai énumérée simplement pour convertir la liste pour commencer par une lettre majuscule, puis le reste soit minuscule, comme vous l'avez écrit.

Ensuite, il cherche simplement ce qui s'applique.

Entrez la description de l'image ici

Cette partie pourrait se faire de plusieurs façons, mais j'ai décidé de l'exemple. Il énumérera simplement un nombre dans la ligne correspondante qui trouve une correspondance pour le suffixe utilisé.

Je séparer la partie (Basketball Courts) en utilisant les parenthèses:

Entrez la description de l'image ici

Je montre ce qui reste car, dans votre cas, les «tribunaux» des «cours de basketball» sont aussi un suffixe de rue:

Entrez la description de l'image ici

Ensuite, j'ai besoin de savoir combien de temps la chaîne est-ce que c'est le suffixe de la rue, donc j'utilise ce qui suit:

Entrez la description de l'image ici

et ça…

Entrez la description de l'image ici

Et enfin cela me permet d'afficher juste la rue:

Entrez la description de l'image ici

Maintenant, je n'ai pas fait la ville et l'état, mais en suivant cette idée, vous pouvez l'atteindre. Aussi, si vous voulez une option plus propre, cherchez définitivement à apprendre à propos de VBA plus. J'espère que cela vous enseigne au moins quelques idées sur la façon de s'y prendre.

User1282637 demande s'il existe un moyen d'accomplir cette tâche et demande toute aide pour ce faire. Le problème n'est pas la mécanique d'Excel autant que la façon de traiter l'ambiguïté dans les données. L'analyse du code postal et de la description est simple (sauf si vous avez un mélange de code ZIP à 5 chiffres et à 9 chiffres). Le problème difficile consiste à séparer la rue de la ville, alors je me concentrerai sur ça. Ce n'est pas une étape par étape comment faire avec des formules Excel. Il s'agit simplement de partager un aperçu du problème et de décrire une approche pour obtenir un résultat pour la partie difficile.

Le problème est qu'il n'y a pas de délimiteurs entre les différents champs. Ce n'est pas un problème pour éliminer la description ou le code postal car ceux-ci sont facilement identifiables. Le problème est de déterminer où la rue se termine et City commence. Considérez ces variations dans la partie de la rue (loin d'une liste exhaustive):

 120 Lemon Street 120 Lemon Drop Street 120 Lemon Street NW 120 East Lemon Street 120 Lemon Street Apt 3 

Le nombre de "mots" dans la rue peut varier d'au moins 1 ou 2, jusqu'à 7 ou 8, ce qui n'est pas utile pour l'analyse. La rue "type" n'est pas particulièrement utile. Il y a de l'ordre de 50 à 100 mots utilisés uniquement pour la rue "type" (rue, avenue, boulevard, chemin, piste cyclable, voie, cour, cercle, terrasse, etc.). Combinez cela avec l'utilisation d'abréviations pour le type de rue, correct et incorrect, et la liste est en centaines. De plus, cette désignation n'est pas toujours le dernier mot dans le champ de la rue. La rue est la partie la plus difficile à identifier, de sorte que l'approche logique est d'identifier le reste, puis le reste est la rue.

La ville peut être plusieurs mots. Washington Court House, OH est trois mots. Ensuite, considérez des situations comme St Marys, OH. La «St» est-elle une partie du nom de la ville ou une désignation de type de rue; Dans quel domaine est-il entré? Ou South Euclid, OH – est-ce que "South" fait partie du nom de la ville ou une direction qui fait partie de l'adresse de la rue? La ville a ses problèmes mais il existe un moyen de les traiter.

Même l'utilisation du code postal pour identifier la ville a des problèmes. Il n'y a pas toujours une correspondance 1: 1 entre le nom de la ville et le code postal.

Le moyen le plus pratique d'attaquer le problème est d'utiliser les «dictionnaires»: une liste de villes et un répertoire de code postal. Ce sont la partie la plus claire de l'adresse. Ceux-ci peuvent être trouvés en ligne ou à partir du service postal. Pour faire des comparaisons, vous devrez peut-être nettoyer vos données ou les listes. Ils auront besoin du même style de majuscule et tout espace supplémentaire dans vos données empêchera une correspondance exacte.

Si vos données ou la liste utilise des abréviations, vous devrez faire face à cela. Soit traduisez le non abrégé aux abréviations standard, soit effectuez une correspondance secondaire contre un dictionnaire abréviation (également disponible en ligne ou du service postal), lorsque ces différences sont trouvées.

Le ZIP peut être facilement analysé, et c'est un bon endroit pour commencer. Effectuez une recherche sur le code postal dans le répertoire du code postal. Si le résultat correspond exactement à une chaîne de mots précédant immédiatement le ZIP, cela identifie quelle partie de l'enregistrement est le champ de la ville.

S'il n'y a pas de correspondance exacte ou sans ambiguïté, passez à une comparaison des noms de villes. Iterate à travers la liste des noms de villes. Pour chaque nom, déterminez le nombre de mots qu'il contient et comparez-le au nombre de mots précédant immédiatement le code postal.

Si vous obtenez une correspondance par l'un ou l'autre processus, tout ce qui reste à la gauche de la ville est l'adresse de la rue.

Ce type d'application est beaucoup plus facile à utiliser avec une application de base de données qu'avec une feuille de calcul. Quoi qu'il en soit, vous pouvez voir que l'essayer de le faire de manière automatisée n'est pas une tâche simple. Vous ne pouvez pas le faire avec quelques formules de tableur.

Peu importe la rigidité de votre programmation, vous risquez toujours d'avoir des enregistrements dont vous avez besoin d'analyser à la main et d'analyser les erreurs que vous devez corriger à la main. Vous n'indiquez pas combien d'enregistrements vous avez. Il peut y avoir moins de travail pour simplement le faire manuellement.

Si le nombre est grand et que je devais le faire, je supprimerais la liste. Faites correspondre les enregistrements faciles, comme des matchs ZIP non ambigus. Ensuite, la quantité de données permet de déterminer à quelle distance vous allez la programmation des jeux automatisés.

Pour les enregistrements qui restent, en supposant que vous avez déjà décollé le ZIP et la description, voici un moyen d'accélérer le processus manuel. Regardez l'enregistrement et identifiez visuellement le nombre de mots dans la ville, qui est une tâche mentale rapide. Entrez cela dans une cellule prescrite et utilisez une formule pour diviser la rue de la ville en fonction du nombre de ruptures d'espace (séparer au Nième espace où N = espaces total + 1 – nombre de mots dans le nom de la ville).

Essayez-le. Cette approche simple devrait fonctionner très bien si vous pouvez vivre avec l'adresse et la ville dans la même cellule. J'ai une formule pour extraire la ville si ce n'est qu'un mot, mais cela devient beaucoup plus complexe si dans les villes à plusieurs mots (p. Ex. New York).

Formules … Adresse et Ville: = GAUCHE (A2, FIND ("OH", A2) -1) État: = MID (A2, FIND ("OH", A2), 2) – vous avez mentionné que tout est OH, alors Je l'ai simplifié Zip: = MID (A2, FIND ("OH", A2) +3,5) Description: = TRIM (MID (A2, FIND ("OH", A2) +8,30))

https://onedrive.live.com/redir?page=view&resid=D91C36B074F4D0F6!3224&authkey=!AO_MbW7Qxv4yWDo

Entrez la description de l'image ici

Code:

 Sub SplitAddress() Dim Addr As String Dim l As Integer Dim Desc As String Dim Zip As String Dim State As String Dim City As String Addr = Selection l = InStrRev(Addr, "(") Desc = Right(Addr, Len(Addr) - l + 1) Addr = Left(Addr, InStrRev(Addr, " ", l) - 1) l = InStrRev(Addr, " ") Zip = Right(Addr, Len(Addr) - l) Addr = Left(Addr, InStrRev(Addr, " ", l) - 1) l = InStrRev(Addr, " ") State = Right(Addr, Len(Addr) - l) Addr = Left(Addr, InStrRev(Addr, " ", l) - 1) l = InStrRev(Addr, " ") City = Right(Addr, Len(Addr) - l) Addr = Left(Addr, InStrRev(Addr, " ", l) - 1) Selection.Offset(0, 1) = Addr Selection.Offset(0, 2) = City Selection.Offset(0, 3) = State Selection.Range("B11").Offset(0, 4) = Zip Selection.Range("B11").Offset(0, 5) = Desc End Sub 

Explication: appuyez sur Alt+F11 et collez le code ci-dessus dans la fenêtre qui s'affiche. Ensuite, sélectionnez une cellule contenant l'adresse et revenez à la fenêtre où vous avez collé le code et appuyez sur F5 .

Si cela fonctionne, nous pouvons travailler pour le rendre plus spécifique à votre situation spécifique.