Extrayez et ajoutez des sous-strings dans des strings

Le context ici est que j'essaie d'identifier les templates de numéros de téléphone d'une grande colonne en désordre et de les formater comme suit:

(CC) NNNN-NNNN

CC étant un code régional à deux numbers

Il peut y avoir deux ou plusieurs nombres dans la même cellule (ils doivent restr dans la même cellule, malheureusement) et doivent être les suivants:

(CC) NNNN-NNNN / (CC) NNNN-NNNN

Les numbers ne sont que des numbers bruts, pas d'espaces ou de caractères, mais ils sont TEXT et doivent restr ainsi en raison de la limite de 15 numbers sur Excel

Maintenant, j'ai un problème avec deux cas

Cas 1:

Deux téléphones et un code régional (18 numbers)

Exemple: CCNNNNNNNNNNNNNNNN

Ce dont j'ai besoin, c'est une fonction qui prend les deux premiers caractères de cette string et les ajoute au onzième sharepoint ladite string, ce qui entraîne une string de 20 caractères

Cas 2:

Un téléphone et deux même code régional (12 numbers)

CCCCNNNNNNNN

Celui-ci doit juste supprimer les deux premiers caractères

Essayé pour le cas 1, mais a fini avec un char de 22 cordes? Je ne suis pas sûr de savoir où j'ai mal tourné

s1 = Mid(Cells(j, 3), 1, 2) s2 = Mid(Cells(j, 3), 3, 10) s3 = Mid(Cells(j, 3), 11, 18) s4 = s1 & s2 & s1 & s3 

DddddMMM TraamMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMDDTRdDTRdAlddice Marco DaeadddddiceAlddddiceAlddddiceAlddddicediceAlddMMMM TratevascocodVachéAachdMemdMM Accus citadinAlddddiceAldddddice Marco illustrddMem TrapanddddAldddddice MarcoAutdMMdiceú Dddddice Da MarcoAndMemMMMMMacheaMMMMMMMMMMMMMMMMMMMMMMMLLMMMMMMMMMMMMVMVMMVLLAVLLLAVAAOTAVAFMMMMLLELGMMLLMMLLELGMLMVMMMLLVVVVVVMAAAAA AYERMMMMMMMMLLELGRAMELAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAARARARARA

  ="("&MID(A1, 1, 2)&") "&mid(A1,3,4)&"-"&mid(a1,7,4)&" / ("&MID(A1, 1, 2)&") "&mid(A1,11,4)&"-"&mid(a1,15,4) 

Pour le cas 2, vous pouvez utiliser la formule ci-dessous.

  ="("&MID(A1, 1, 2)&") "&mid(A1,5,4)&"-"&mid(a1,9,4) 

Votre solution doit-elle être dans vba?

Le troisième paramètre dans Mid est la longueur de la sous-string extraite, et non son indice final. Si elle est omise – la sélection va à la fin de la string. DddidenceTeaMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAAAAMMMMMMMMMMTMMM Traufdachachachachachdddachachachachdachdachachachach afeaddéleter aledand aledanddddddddélempa afdélemportavidasunemediadeterameldach afande aledeter aledénddélempandáddach af addddd établissementsdélienesdiceAudereterdeterchas aleéninél s2 = Mid(Cells(j, 3), 3, 10) Votre cas 1 ressemblerait à ceci:

 Sub test() Dim s As Ssortingng, t As Ssortingng s = "CCNNNNNNNNNNNNNNNN" t = Mid(s, 1, 10) & Mid(s, 1, 2) & Mid(s, 11) Debug.Print t End Sub 

Qui a produit:

 CCNNNNNNNNCCNNNNNNNN 

Pour vos deux cas:

 =IF(LEN(A1)=18,REPLACE(A1,11,0,LEFT(A1,2)),IF(LEN(A1)=12,MID(A1,3,10))) 

Ne connaissant pas les autres formats ou les résultats souhaités, il est difficile de développer la formule. La formule renvoie FALSE si la longueur est différente de 12 ou 18.