La fonction ci-dessous correspond à ce que j’utilise pour gérer les informations de contact (adresses électroniques/numéros de téléphone). Si l'entrée est un identifiant de courrier électronique (avec du texte), il le conservera tel quel. Lorsqu'un numéro de téléphone est entré, il effectue diverses opérations.
=IF(ISNUMBER(E2), IF(LEFT(E2, 2) = "44", REPLACE(E2,1,2,"0"), CONCAT("0",E2)), E2)
J'essaie d'ajouter le code/la fonction ci-dessous au numéro de téléphone avant que Google Sheets applique la formule ci-dessus.
=REGEXREPLACE(TEXT(E2,"##############"),"\D","")
Fondamentalement, si la cellule E2 est un nombre, je souhaite commencer par REGEXREPLACE
ce nombre, puis effectuer les opérations supplémentaires. Je ne suis pas sûr de savoir comment joindre les deux formules.
Vous pouvez consulter le résultat attendu et tester vos formules ici: exemple de tableur
L'instruction IF
est composée de 3 parties. comprendre comment cela fonctionne:
if (something is something,do this,if not - do this)
donc dans l'expression de la formule:
=IF(E2="something","its ok, do nothing","E2 isn't ""something"" do something")
les choses deviennent confuses si vous voulez faire des choses plus avancées, cependant, la règle en 3 parties reste toujours
=REGEXREPLACE(TEXT(A3,"##############"),"\D","")
=IF(B3="",A3, IF(LEFT(B3, 2) = "44", REPLACE(B3,1,2,"0"), CONCAT("0",B3)))
=IF(AND(ISNUMBER(A3),LEFT(A3, 2) = "44"), REPLACE(A3,1,2,"0"),
IF(AND(ISNUMBER(A3),LEFT(A3, 2) <> "44"), CONCAT("0",A3),
IF(AND(ISTEXT(A3), LEFT(A3, 3) = "+44"),REPLACE(REGEXREPLACE(TEXT(A3,"##############"),"\D",""),1,2,"0"),
IF(AND(ISTEXT(A3), LEFT(A3, 2) = "07"), A3,
IF(AND(ISTEXT(A3), LEFT(A3, 1) = "7"), CONCAT("0",REGEXREPLACE(TEXT(A3,"##############"),"\D","")),
IF(ISTEXT(A3),A3))))))
pourquoi cela n'a pas fonctionné pour vous:
Les cellules A7, A9 et A11 sont dans votre feuille au format TEXT
et non pas NUMBER
alors que votre formule réclame =IF(ISNUMBER(...etc.
de sorte que la valeur renvoyée est égale à la valeur initiale/initiale .
Ainsi, si E2 est un nombre, vous souhaitez exécuter REGEXREPLACE(TEXT(E2,"##############"),"\D","")
sur ce nombre, puis effectuez IF(LEFT(
value
, 2) = "44", REPLACE(
value
,1,2,"0"), CONCAT("0",
value
))
sur le résultat de REGEXREPLACE
.
Dans ce cas, la formule que vous recherchez serait beaucoup plus ordonnée avec une cellule auxiliaire pour conserver le résultat intermédiaire de REGEXREPLACE
, mais vous pouvez le faire sans. Vous devrez utiliser la formule REGEXREPLACE
à la place d'une référence simple E2 pour chacune des trois fois que vous vous référez . ) E2 dans le IF
intérieur, comme suit:
=IF(ISNUMBER(E2), IF(LEFT(REGEXREPLACE(TEXT(E2,"##############"),"\D",""), 2) = "44", REPLACE(REGEXREPLACE(TEXT(E2,"##############"),"\D",""),1,2,"0"), CONCAT("0",REGEXREPLACE(TEXT(E2,"##############"),"\D",""))), E2)
formule mise à jour
Toutes mes excuses, je pensais que la condition initiale ISNUMBER
fonctionnait déjà pour vous. Maintenant que j'ai vu vos exemples de la façon dont cela devrait fonctionner, j'ai mis à jour la formule:
=IF(value(REGEXREPLACE(TEXT(D3,"##############"),"\D",""))<>0, IF(LEFT(REGEXREPLACE(TEXT(D3,"##############"),"\D",""), 2) = "44", REPLACE(REGEXREPLACE(TEXT(D3,"##############"),"\D",""),1,2,"0"), CONCAT("0",REGEXREPLACE(TEXT(D3,"##############"),"\D",""))), D3)
Cela fonctionne sur tous les exemples de votre feuille de test.