我正在生成csv文件,有些单元格的格式为nn:nnnn
,即以冒号分隔的数字。它不是时间格式,也不是日期格式,它只是文本单元格,我不希望它们被重新格式化。
我已经为我的代码添加了一些逻辑,以便识别它是否看起来像合法的时间格式或日期,如果是这样,我将这个字符串包装成="nn:nnnn"
。但我对将这些字符添加到所有单元格并不感兴趣。
它几乎解决了我的问题,但仍有一些案例,如07:1155
,MS Excel坚持将其翻译为 1.09375 。其他单元格如68:0062
保持不变。有没有办法识别要计算或翻译的字符串?
是否有任何解决方法,例如MS Excel中的任何设置,告诉它不要对这些文本执行任何翻译?
答案 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)
尝试使用单引号在字符串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,“#”)
中