首页 文章

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

提问于
浏览
2

我正在生成csv文件,有些单元格的格式为 nn:nnnn ,即以冒号分隔的数字 . 它's not a time format nor a date format, it'只是文本单元格,我不希望它们被重新格式化 .

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

它几乎解决了我的问题,但仍有一些情况,如 07:1155 ,MS Excel坚持将其翻译为 1.09375 . 其他细胞如 68:0062 保持完整 . 有没有办法识别要计算或翻译的字符串?

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

3 回答

  • 1

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

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

  • 0

    我从JP Ronse先生那里得到了以下答案Microsoft Community forum

    尝试使用单引号在字符串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这样的值没有翻译

    在冒号(而不是00)之后检查2 n可能是一种解决方法 .

  • 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指定为传入列格式 .

相关问题