如何防止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,“#”)中包装导入的值