如何防止Excel处理包含冒号的字符串作为公式

时间:2013-04-02 11:35:54

标签: excel csv ms-office

我正在生成csv文件,有些单元格的格式为nn:nnnn,即以冒号分隔的数字。它不是时间格式,也不是日期格式,它只是文本单元格,我不希望它们被重新格式化。

我已经为我的代码添加了一些逻辑,以便识别它是否看起来像合法的时间格式或日期,如果是这样,我将这个字符串包装成="nn:nnnn"。但我对将这些字符添加到所有单元格并不感兴趣。

它几乎解决了我的问题,但仍有一些案例,如07:1155,MS Excel坚持将其翻译为 1.09375 。其他单元格如68:0062保持不变。有没有办法识别要计算或翻译的字符串?

是否有任何解决方法,例如MS Excel中的任何设置,告诉它不要对这些文本执行任何翻译?

3 个答案:

答案 0 :(得分:1)

您可以尝试执行(菜单)数据/获取外部数据/文本,而不是仅在Excel中打开CSV。或者,如果您使用VBA,那将是:

With ActiveSheet.QueryTables.Add(Connection:="TEXT;H:\csvtest.csv" _
    , Destination:=Range("$A$3"))
    .Name = "csvtest_1"
    .FieldNames = True
   etc
End With

您可能需要将Text指定为传入列格式。

答案 1 :(得分:1)

我在Microsoft Community forum

得到了JP Ronse先生的以下答复

尝试使用单引号在字符串07:1155之前。  单引号可防止Excel解释该值。

出于某种原因,Excel会将07:1155之类的字符串解释为时间并将其转换为值。  Excel将07:1155视为7小时1155分钟,转换为值:

07:00 => 0.291666666666667  1155分钟=> (1155/60)/ 24 => 0.802083333333333

总和为1.09375

看起来像n:00nn或类似n:0nnnnn

这样的值没有翻译

检查冒号后的2 n(不是00)可能是一种解决方法。

答案 2 :(得分:0)

我生成了一个CSV文件,其中包含您引用的值并将其导入excel;所有值都作为“常规”导入 - 它们都没有转换为任何其他格式。我无法重现你描述的行为。

如果我能够重现这种行为,我原本打算尝试将导入的值包装在= Text(Value,“#”)