Excel, TRIM Chemin jusqu'au dernier dernier “/”

1

J'ai des chemins suivants:

Stack / Over / Flow

Super / Utilisateur

Formule j'ai:

=RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,"/","|",B2))+1)

Cela prend actuellement mon chemin en A2, et quel que soit le # que je déclare en B2, coupe le chemin en fonction du #. Donc si j'ai 2 en B2, ça me donnera du flux, et si je mets 1 ça me donnera Over / Flow. Le problème est que les chemins que j'ai ne sont pas de longueur uniforme et ne coupent pas non plus le noeud final. Ma formule est en C2. Numéro à analyser en B2. chemins en A2.

Le truc ici est de le faire extraire le deuxième dernier noeud.

Sortie souhaitée :

Plus de

Super

Jonnyboi
la source

Réponses:

2

Cette approche permettra l'extraction de tout /segment séparé en fonction de la valeur en B2.

D'abord définir un nom seq_99

seq_99 refers to: =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)

Cela crée un tableau de valeurs {1;99;198;297;...}

REMARQUE Si l'un de vos segments est peut-être plus long, augmentez le nombre 99; par exemple à 999)

Alors essayez cette formule:

=INDEX(TRIM(MID(SUBSTITUTE(A2,"/",REPT(" ",99)),seq_99,99)),B2)

Où B2 contient la position du segment que vous souhaitez extraire.

Si vous voulez compter en sens inverse, tel que

1 = dernier segment

2 = avant-dernier segment

Puis remplacez B2 par:

(LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))+2-B2

donc la formule ressemblerait à ceci:

=INDEX(TRIM(MID(SUBSTITUTE(A2,"/",REPT(" ",99)),seq_99,99)),(LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))+2-B2)

Voici un exemple de la formule utilisée. Notez qu'avec un 2dans la colonne B, le deuxième à partir du dernier segment est renvoyé par la formule:

entrez la description de l'image ici

Ron Rosenfeld
la source
Que voulez-vous dire définir un nom? est-ce une fonction?
Jonnyboi
Define Nameest une option sur l' Defined Namesonglet de la barre de formule. Un nom peut faire référence à un lieu ou à une formule. Effectuez une recherche sur Internet pour trouver des exemples d'utilisation de cette fonctionnalité. Il suffit de copier le seq_99et la formule dans les cases appropriées.
Ron Rosenfeld
À quelles cellules dois-je définir le nom? B2: B1000 (ou mon dernier nom de chemin)?
Jonnyboi
@Jonnyboi Je ne comprends pas votre question. Je n'ai rien écrit sur les noms définis autres que seq_99. Si vous souhaitez définir un autre nom pour vos propres besoins, vous pouvez certainement le faire.
Ron Rosenfeld
Je voulais dire dans quelle cellule est-ce que je fais la définition? Tous mes chemins sont A2: A22350, je définis donc seq_99 dans B1. Ensuite, j'utilise =INDEX(TRIM(MID(SUBSTITUTE(A2,"/",REPT(" ",99)),seq_99,99)),B2)B2. Ensuite, remplacez la partie 'B2' de la forumla par (LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))+2-B2right?
Jonnyboi
1

Utilisez ceci:

=TRIM(MID(SUBSTITUTE(A2,"/",REPT(" ",99)),(LEN(A2)-LEN(SUBSTITUTE(A2,"/",""))-1)*99+1,99))

Il retournera l'avant-dernier:

entrez la description de l'image ici

Scott Craner
la source
Merci Scott, cela fonctionne sur certains de mes chemins, pas tous .. dans certains cas, il retourne le 3ème dernier..dans certains j'ai des blancs, et d'autres sont des caractères partiels
Jonnyboi
veuillez donner quelques exemples de ceux qui sont en erreur. @Jonnyboi
Scott Craner
il est assez bizarre ... d'essayer de comprendre pourquoi, dans mes chemins, cela ne fonctionne pas .. Lorsque je donne des exemples, cela fonctionne bien ... mais mon ensemble de données reçoit des retours différents.
Jonnyboi
Copiez et collez ceux qui ne fonctionnent pas directement et voyez si vous rencontrez le même problème. Assurez-vous également que toutes les références dans ces formules se rapportent à la même cellule.
Scott Craner
1
Je ne peux éventuellement pas aider sans voir les données.
Scott Craner