【问题标题】:Excel forcing Text NumberFormat on a cell with FormulaExcel在具有公式的单元格上强制使用Text NumberFormat
【发布时间】:2018-09-28 02:07:53
【问题描述】:

我正在尝试将公式存储在单元格中。该单元格的NumberFormat 设置为"@",即文本。当我这样做时:

TargetSheet.Cells(Row, Col).Formula = "=A7"

A7 中包含 "1805R03-01" 我得到 "=A7" 显示在单元格中。 即使我认为如果您通过 Formula 属性设置文本格式字段,您应该可以定义公式,但我将代码更改为:

(1)  TargetSheet.Cells(Row, Col).NumberFormat = "General"
(2)  TargetSheet.Cells(Row, Col).Formula = "=A7"

这让我得到了我想要的东西,因为现在我的单元格显示正确的值 "1805R03-01" 但 Excel 再次将数字格式设置为“@”,因此如果我在该单元格上按 Enter 键,则显示返回"=A7"。我可以在上面的代码中重新添加 Line (1) 和额外的 Line (3),但这只是意味着我将停止一次将我的公式转换回文本,在该单元格上按两次输入仍然会导致 @ 987654332@。如何阻止 Excel 在单元格上强制使用文本数字格式?当我手动将其格式返回为 "General" 时,单元格会正确显示,因此不需要文本数字格式。

【问题讨论】:

  • 所以在自动格式化后,Excel 不再将公式中的A7 视为单元格引用,而是将其视为文字字符串"A7"?如果单元格A7 的数字格式是文本,请尝试将其设置为其他内容(即使是像0 这样的技术错误只是为了看看)。然后在cells(row, col) 中重新输入公式,检查是否得到不同的结果。您可以尝试的另一件事是TargetSheet.Cells(Row, Col).Formula = "=""""&A7",看看空字符串是否会干扰自动格式化。可能有一个应用程序设置,您可以通过代码切换以打开/关闭自动格式化。
  • 它实际上将整个公式 "=A7" 不仅仅是 "A7" 视为文字字符串。而且您实际上找到了解决方案,当我将源单元格格式设置为General(之前是文本)时,问题就不再发生了。如何将评论标记为解决方案?
  • 如果您想将其标记为解决方案,我已将我的评论作为答案发布,其中包含一些额外的细节。

标签: vba excel excel-formula number-formatting


【解决方案1】:

如果单元格A7 的数字格式为text,请尝试将其设置为general。然后在cells(row, col)重新输入公式,看看有没有不同的结果。

从属单元格(在公式审核的上下文中)似乎继承了其先例的 NumberFormat -- 除非先例单元格的 NumberFormat 是 general

【讨论】:

    【解决方案2】:

    我不确定这是否有帮助,但我过去遇到过类似的问题,Excel会根据自己的判断自动切换回数字格式。

    所以我所做的是:假设我有两列

    A          B
    abc       123
    asuh      412
    auw       9781
    ija       124
    

    我会将另一列 C 列的编号设置为一般

    Range("C:C").Select
    Selection.NumberFormat = "general" 
    

    然后将 A 或 B 复制到其中。在您的情况下,它将自动执行代码。

    它并没有再次变成文本或数字。 至少对我来说。

    【讨论】:

    • 谢谢,这是一个很好的建议,与@chillin 在对我的问题的评论中给出的答案相同,以使源单元格不是文本,因为 excel 似乎想要复制源单元格中的 NumberFormat 以及值。
    猜你喜欢
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多