【问题标题】:Numbers are being concatenated instead of being summed数字被连接而不是相加
【发布时间】:2018-01-31 13:55:55
【问题描述】:

我正在尝试将单元格J3 的值添加到工作表“tableau”中的M3,并将总和放入工作表“公司”中的单元格H4。但是,当我编写此代码时,它返回的连接值类似于 1500.60700.20

可能是什么问题?我是 Vba excel 新手,所以请记住这一点。

worksheet("tableau").Range("h4").Value = worksheet("Company").Range("J3").Value + worksheet("Company").Range("M3").Value

【问题讨论】:

  • 你在 J3 和 M3 中的输入值是多少?
  • J3 的值为 1500.60,M3 的值为 700.20
  • H4、J3、M3是如何格式化的?这些是数字还是字符串?
  • 它们被格式化为字符串,我将它们转换为数字(手动)并运行代码,它就像一个魅力谢谢:)。如何在 vba 中直接避免此类问题,例如我可以将单元格值转换为数字然后在编码时直接使用 range("j3").value+range("m3") 吗?
  • 使用下面的@braX 答案。 val-函数将字符串转换为数字。

标签: vba excel concatenation


【解决方案1】:

如果它们被格式化为字符串,请使用Val 函数将它们转换为数字:

worksheet("tableau").Range("h4").Value = Val(worksheet("Company").Range("J3").Value) + Val(worksheet("Company").Range("M3").Value)

【讨论】:

    【解决方案2】:

    您可以将这些值指定为数字:

    Dim i as Long, j as Long
    i = worksheet("Company").Range("J3").Value
    j = worksheet("Company").Range("M3").Value
    worksheet("tableau").Range("h4").Value = i + j
    

    编辑:这类似于@braX 评论,只是另一种工作方式。

    【讨论】:

    • 对于像我这样的初学者来说,您的代码更清晰,更容易理解,我会使用这个版本,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    相关资源
    最近更新 更多