10

我有一个 Excel 公式从列中读取数据。该列中的数据有时是类似日期的格式,例如“10-11”。尽管我已确保该列是文本格式的——并且所有值都正确显示为纯文本,而不是重新解释为日期——该公式基本上将它们重新解释为参考中的日期。

我需要一种方法来强制公式的单元格引用将单元格解释为文本。我试过 TEXT(A1, "@") 但它不起作用——它给出了日期的数值。

4

7 回答 7

5

简短回答:当在公式中引用类似数字(或类似日期)的文本值时,不要在 Excel 需要数字的公式中使用它们。

长答案:即使源列被格式化为文本并且源列中的值真正输入为文本(而不是数字,包括日期),Excel 可能会在您引用它们时自动将文本值转换为数字(包括日期)如果您在 Excel 需要数字(或日期)的地方使用它们,则为公式。

例如(假设美国日期格式),在空白工作表中:

  1. 将 A 列的格式设置为文本。

  2. 在单元格 A1 中,输入值 10-11。

  3. 在单元格 B1 中,输入公式 =T(A1)。如果 T() 工作表函数是文本,则返回提供的值。否则,它返回一个空字符串。单元格 B1 中公式的结果应该是 10-11,表示 A1 的值是文本,而不是数字或日期(在这种情况下,结果将为空字符串)。

  4. 在单元格 C1 中,输入公式 =A1。

  5. 在单元格 D1 中,输入公式 =T(C1)。结果也应该是10-11,表示C1中公式的值是文本,不是数字或日期。这表明您可以(有时)在公式中使用看起来像数字(或日期)的文本值,并让 Excel 将其视为文本(这是您想要的)。

  6. 在单元格 E1 中,输入公式 =A1+0。结果将是 40827。这是日期 2011 年 10 月 11 日的数值。这表明您可以(有时)在公式中使用看起来像数字(或日期)的文本值,Excel 会自动将其转换为如果您在 Excel 需要数字的地方(如 + 运算符的任一侧)使用数字(这是您观察到的)。

于 2011-08-01T16:46:38.923 回答
5

Brian Camire 的回答解释了原因,但这里有一个适合您的工作表函数。请注意,您必须根据最长字符串的长度在其中创建该数字数组。这是一个数组公式,所以当您第一次输入它时,您必须按 CTRL-SHIFT-ENTER,然后您可以单击并将其拖到列中。

=LEFT(A1, MATCH(FALSE, ISNUMBER(VALUE(MID(A1, {1,2,3,4,5}, 1))),0) - 1)
于 2011-08-01T19:48:56.447 回答
5

要将值插入单元格并使其不被自动格式化,而只是被视为文本,您可以像这样输入它:

=("cell data")

例如:

=("+1 3456789")
于 2016-02-19T19:05:18.537 回答
4

当您使用 时&"",Excel会将公式的结果转换为文本(就像*1转换为数字一样)。

因此,您可以使用以下公式:

=TEXT(A1;"jj-mm")&""
于 2011-08-01T14:35:52.587 回答
1

如果您在单元格中的文本前面加上一个单引号,则它应该在所有引用中表示为文本:

'10-11
于 2011-08-01T13:23:49.010 回答
0

只需在输入中添加零!

我遇到了类似的问题,我有一个带有文本前缀的数字列表(如 FOO-1、FOO-25、FOO-979),但我只想要数字部分(1、25、979),这样我就可以运行另一个公式。我使用 SUBSTITUTE 将文本部分替换为空白,但我使用这些数字的其他公式得出了虚假结果。我最终使我的公式是这样的:

=SUBSTITUTE(B1:B10,"FOO-","")+0,现在 ISNUMBER 说的是 TRUE,而之前它说的是 FALSE。

于 2016-09-14T13:58:30.790 回答
0

就我而言,我有一个表格工作表,经销商使用它来宣传零件并计算最终成本;它引用了一个锁定的“产品”表。问题是我无法控制他们输入的内容。

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

我已经弄清楚了大部分。唯一一个不是文本/数字的那个。

如果有人正在寻找类似的解决方案,我做了以下事情:我创建了三个额外的列来测试和显示三种不同的情况:“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"))

这(上)测试所有真/假结果,并根据结果是什么,我使用以下格式对它们中的每一个进行格式化:

ISNUMBER = VALUE(B42)
DATE FORMATTED AS B42*1
ELSE TEXT - AS ORIGINAL

=IF(M42 = "NUMBER", VALUE(B42), IF(M42 = "DATE", B42*1, B42))

所以现在我只需要弄清楚如何测试某个东西是否既是文本又是数字,因为 7-5601-RT 测试结果与数字相同:“FALSE,FALSE,TRUE,TRUE”

于 2018-04-11T15:12:58.700 回答