如何防止Excel处理包含冒号的string作为公式
我正在生成csv文件,并且一些单元格的格式为nn:nnnn
,即由冒号分隔的数字。 这不是一个时间格式,也不是一个date格式,它只是文本单元格,我不希望它们被重新格式化。
我已经添加了一些逻辑到我的代码,以确定它是否看起来像一个合法的时间格式或date,如果是这样,我包装该string像这样="nn:nnnn"
。 但是我不想把这些字符添加到所有单元格中。
它几乎解决了我的问题,但仍然有一些例如07:1155
MS Excel坚持把它翻译为1.09375 。 其他细胞如68:0062
保持完整。 有什么方法可以识别哪些string将被计算或翻译?
是否有任何解决方法,如MS Excel中的任何设置,告诉它不要对这些文本执行任何翻译?
不要只是在Excel中打开CSV,你可以尝试(菜单)数据/获取外部数据/从文本。 或者如果你使用的是VBA,那将是这样的:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;H:\csvtest.csv" _ , Destination:=Range("$A$3")) .Name = "csvtest_1" .FieldNames = True etc End With
您可能需要指定文本作为传入的列格式。
我在微软社区论坛上从JP Ronse先生那里得到了以下答案
尝试在单引号之前使用07:1155之类的string。 单引号可以防止Excel解释值。
出于某种原因,Excel将一个string(如07:1155)解释为一个时间并将其转换为值。 Excel将07:1155分为7小时1155分钟,转化为值:
07:00 => 0.291666666666667 1155分钟=>(1155/60)/ 24 => 0.802083333333333
总和是1.09375
它看起来像n:00nn或像n:0nnnnn这样的值没有翻译
在冒号(不是00)之后检查2 n可能是一种解决方法。
我生成一个CSV文件,其中包含您引用的值并将其导入到Excel中; 所有值都被导入为“一般” – 它们都没有被转换成任何其他格式。 我无法重现你描述的行为。
如果我已经能够重现这种行为,我已经计划尝试在= Text(Value,“#”)中包装导入的值