如何让Excel不将数字识别为日期?解决导入数据误判问题
解决Excel将导入的"3.2"识别为日期的问题
我太懂这种糟心的情况了——你的系统用逗号做小数分隔符,Excel硬生生把XML里拿到的"3.2"当成了日期格式(把点号认成了日期分隔符),直接转成了03.02.2020,连替换操作都不管用。别着急,这里有几个直接有效的解决办法:
方法一:修改公式直接转换为正确数字
这是最一劳永逸的方式,我们可以在现有公式基础上,把返回的文本里的点号替换成逗号,再强制转换成数字:
用双减号(--)快速转数字:
=--SUBSTITUTE(FILTERXML(WEBSERVICE("http://iss.moex.com/iss/securities/SBER/dividends.xml?iss.meta=off"),"//document//data//rows//row[1]/@value"), ".", ",")
或者用VALUE函数明确转换:
=VALUE(SUBSTITUTE(FILTERXML(WEBSERVICE("http://iss.moex.com/iss/securities/SBER/dividends.xml?iss.meta=off"),"//document//data//rows//row[1]/@value"), ".", ","))
原理:SUBSTITUTE把XML返回的"3.2"里的.换成你系统用的小数分隔符,,再通过--或者VALUE把文本格式的数字转换成真正的数值,Excel就不会再把它识别成日期了。
方法二:先以文本格式导入再转换
如果你不想改公式,可以先让Excel以文本形式接收数据,再转换成正确的数值:
- 先把目标单元格的格式设置为文本(右键单元格→设置单元格格式→数字→文本)
- 重新运行你的原公式,此时会显示原始的"3.2"文本
- 选中这个单元格,点击「数据」选项卡→「分列」
- 在分列向导里:
- 步骤1选「分隔符号」,点击下一步
- 步骤2取消所有分隔符选项,点击下一步
- 步骤3在「列数据格式」里选「常规」,然后点击「高级」,在弹出的窗口里把「小数分隔符」设为
.,「千位分隔符」设为你系统用的符号,确定后完成分列
这样Excel就会把"3.2"正确转换成你系统格式的小数(比如3,2)。
为什么之前的替换操作没用?因为Excel已经把"3.2"自动转换成了日期的序列号(本质是数字),此时单元格里存的根本不是"3.2"这个文本,自然搜不到.来替换。必须先确保数据以文本形式保留,再做转换才有效。
内容的提问来源于stack exchange,提问作者empenoso




