lcd*_*ces 10 excel worksheet-function array-formulas
我有一个Excel公式从列中读取数据.该列中的数据有时是类似日期的格式,例如"10-11".尽管我确保列是文本格式的 - 并且所有值都以纯文本形式显示,而不是重新解释为日期 - 但公式基本上将它们重新解释为引用中的日期.
我需要一种方法来强制公式的单元格引用将单元格解释为文本.我试过TEXT(A1,"@"),但它不起作用 - 它给出了日期的数值.
简短回答:在公式中引用类似数字(或类似日期)的文本值时,请不要在Excel期望数字的公式中使用它们.
答案很长:即使源列格式化为文本并且源列中的值真正作为文本输入(而不是数字,包括日期),Excel可能会在您引用它们时自动将文本值转换为数字(包括日期)如果您在Excel期望数字(或日期)的地方使用它们,则为公式.
例如(假设美国日期格式),在空白工作表中:
将A列的格式设置为Text.
在单元格A1中,输入值10-11.
在单元格B1中,输入公式= T(A1).如果T()工作表函数是文本,则返回提供的值.否则,它返回一个空字符串.单元格B1中公式的结果应为10-11,表示A1的值是文本,而不是数字或日期(在这种情况下,结果将是空字符串).
在单元格C1中,输入公式= A1.
在单元格D1中,输入公式= T(C1).结果也应该是10-11,表示C1中公式的值是文本,而不是数字或日期.这表明您可以(有时)使用看起来像公式中的数字(或日期)的文本值,并让Excel将其视为文本(这是您想要的).
在单元格E1中,输入公式= A1 + 0.结果将是40827.这是2011年10月11日日期的数值.这表明您可以(有时)使用看起来像公式中的数字(或日期)的文本值,Excel将自动将其转换为一个数字(这是你观察到的)如果你在一个地方(比如+运算符的两边)使用它,那里Excel期望一个数字.
Brian Camire的答案解释了原因,但这是一个适合您的工作表功能.请注意,您必须根据最长字符串的长度在其中创建该数字数组.这是一个数组公式,因此当您第一次输入它时,您必须按CTRL-SHIFT-ENTER,然后您可以单击并向下拖动列.
=LEFT(A1, MATCH(FALSE, ISNUMBER(VALUE(MID(A1, {1,2,3,4,5}, 1))),0) - 1)
Run Code Online (Sandbox Code Playgroud)
要将值插入单元格并使其不自动格式化,并将其视为文本,您可以像这样输入:
=("cell data")
Run Code Online (Sandbox Code Playgroud)
例如:
=("+1 3456789")
Run Code Online (Sandbox Code Playgroud)