J'ai une formule Excel qui lit les données d'une colonne. Les données de cette colonne sont parfois un format de type date, tel que "10-11". Bien que je me sois assuré que la colonne soit formatée avec du texte (et que toutes les valeurs s'affichent correctement en texte brut et non réinterprétés en tant que dates), la formule les réinterprète en tant que dates dans la référence.
J'ai besoin d'un moyen de forcer la référence de cellule de la formule pour interpréter la cellule en tant que texte. J'ai essayé TEXT (A1, "@") mais ça ne marche pas - ça donne la valeur numérique de la date.
La réponse de answer de Brian Camire explique pourquoi, mais voici une fonction de feuille de calcul qui fonctionnera pour vous. Notez que vous devez créer ce tableau numérique en fonction de la longueur de la chaîne la plus longue. C'est une formule matricielle, donc lorsque vous la saisissez pour la première fois, vous devez appuyer sur CTRL-SHIFT-ENTER, vous pouvez alors cliquer dessus et le faire glisser le long de la colonne.
=LEFT(A1, MATCH(FALSE, ISNUMBER(VALUE(MID(A1, {1,2,3,4,5}, 1))),0) - 1)
Pour insérer une valeur dans une cellule sans la formater automatiquement et la traiter simplement comme du texte, vous pouvez la saisir comme ceci:
=("cell data")
par exemple:
=("+1 3456789")
Réponse courte: lorsque vous faites référence à des valeurs textuelles semblables à des chiffres (ou à des dates) dans une formule, ne les utilisez pas à un endroit de la formule où Excel s'attend à un nombre.
Réponse longue: même si la colonne source est mise en forme en tant que texte et , les valeurs de la colonne source sont réellement entrées en tant que texte (et non en chiffres, y compris les dates), Excel peut convertir automatiquement les valeurs de texte en nombres (y compris les dates) vous les référencez dans une formule if vous les utilisez à un endroit où Excel attend un numéro (ou une date).
Par exemple (en prenant les formats de date américains), dans une feuille de calcul vierge:
Définissez le format de la colonne A sur Texte.
Dans la cellule A1, entrez la valeur 10-11.
Dans la cellule B1, entrez la formule = T (A1). La fonction de feuille de calcul T() renvoie la valeur fournie s'il s'agit de texte. Sinon, il retourne une chaîne vide. Le résultat de la formule dans la cellule B1 doit être 10-11, indiquant que la valeur de A1 est du texte, et non un nombre ou une date (auquel cas le résultat serait une chaîne vide).
Dans la cellule C1, entrez la formule = A1.
Dans la cellule D1, entrez la formule = T (C1). Le résultat doit également être 10-11, indiquant que la valeur de la formule en C1 est du texte et non un nombre ou une date. Cela montre que vous pouvez (parfois) utiliser une valeur de texte qui ressemble à un chiffre (ou une date) dans une formule et qu'Excel la traite comme du texte (ce que vous voulez).
Dans la cellule E1, entrez la formule = A1 + 0. Le résultat sera 40827. Il s'agit de la valeur numérique de la date du 11 octobre 2011. Cela montre que vous pouvez (parfois) utiliser une valeur de texte qui ressemble à un chiffre (ou une date) dans une formule et que Excel convertira automatiquement en un nombre (ce que vous avez observé) si vous l'utilisez à un endroit (comme de part et d'autre de l'opérateur +) où Excel s'attend à un nombre.
Lorsque vous utilisez&""
, Excel convertit les résultats d'une formule en texte (comme *1
serait converti en nombres).
Ainsi, vous pouvez utiliser cette formule:
=TEXT(A1;"jj-mm")&""
Si vous mettez un guillemet simple devant le texte dans la cellule, il devrait être représenté sous forme de texte sur toutes les références:
'10-11
Il suffit d'ajouter zéro à l'entrée!
J'avais un problème similaire: j'avais une liste de nombres avec un préfixe textuel (comme FOO-1, FOO-25, FOO-979), mais je voulais juste la partie numérique (1, 25, 979) pour pouvoir en lancer un autre. formule hors de cela. J'utilisais SUBSTITUTE pour remplacer le texte par des blancs, mais mon autre formule utilisant ces chiffres donnait des résultats erronés. J'ai fini par faire ma formule comme ceci:
= SUBSTITUT (B1: B10, "FOO -", "") + 0, et maintenant, ISNUMBER dit VRAI alors qu'avant, il disait FAUX.
Dans mon cas, les concessionnaires utilisent une feuille de calcul de formulaire pour publier des pièces et le calculent le coût final; il fait référence à une fiche "produits" verrouillée. Le problème est que je n'avais aucun moyen de contrôler ce qu'ils entraient.
Products can be like:
101 = A true number
7-2009 = Reads as date
7-5601-RT = TEXT/NUMBER reads as both number or text (NOT SOLVED YET)
CP6072CD = reads as plain text
J'ai presque tout compris le seul qui ne le soit pas est celui qui lit à la fois text/Number.
Si quelqu'un cherchait une solution similaire, j'ai procédé comme suit: J'ai créé trois colonnes supplémentaires pour tester et afficher les trois cas différents: "NUMBER", "DATE", "TEXT".
DATE: =NOT(ISERROR(DATEVALUE(B42)))
ISOTHER: =(ISNUMBER(--(MID(B42,ROW(INDIRECT("1:"&LEN(B42))),1))))
NUMBER: =ISNUMBER(B42)
NUMBER/TEXT: =NOT SOLVED YET
I42 = DATE
J42 = NUMBER
K42 = OTHER
L42 = TEXT
M42 = THE RESULT OF THE QUERY BELOW
=IF(AND(I42 = FALSE, J42 = FALSE, K42 = TRUE), "NUMBER", IF(AND( I42 = TRUE, J42= FALSE, K42=TRUE), "DATE", "TEXT"))
Ceci (ABOVE) teste tous les résultats true/false et, en fonction de la valeur, je les formate en utilisant:
ISNUMBER = VALUE(B42)
DATE FORMATTED AS B42*1
ELSE TEXT - AS ORIGINAL
=IF(M42 = "NUMBER", VALUE(B42), IF(M42 = "DATE", B42*1, B42))
Alors maintenant, je dois juste savoir comment vérifier si quelque chose est à la fois un texte et un nombre car le 7-5601-RT effectue le test avec le même numéro: "FALSE, FALSE, TRUE, TRUE"