使用vba比较excel中两个单元格的数字格式

时间:2014-05-19 13:33:24

标签: excel vba number-formatting

我的问题:

单元格A1:值= 12且数字属性是通用的。 单元格A2:值= 12,数字属性是带有2个小数点的数字,因此数字显示为" 12.00"

如何在VBA中使用宏或以任何其他方式验证两个单元格是否具有相同的数字属性?

3 个答案:

答案 0 :(得分:3)

您可以比较他们的NumberFormat属性:

If Range("A1").NumberFormat = Range("A2").NumberFormat Then

但是,有许多不同的格式,包括自定义格式,可以应用于使它们看起来相同的单元格,而不会具有完全相同的NumberFormat值。

这意味着比较格式永远不会像比较值那样可靠。 (需要比较格式也很不寻常。)

答案 1 :(得分:2)

您可以使用NumberFormat方法。

使用此代码,A1中的12(格式为一般)和B1中的12(格式为12.00)

Option Explicit
Sub Stuff()

    MsgBox Range("A1").NumberFormat
    MsgBox Range("B1").NumberFormat

End Sub

将分别返回“General”和“0.00”的消息。

所以使用

If Range("A1").NumberFormat = Range("B1").NumberFormat Then
    -- do stuff here
End If

会告诉你他们是否相等。

答案 2 :(得分:0)

听起来你真的关注单元格的.NumberFormat属性只是屏蔽在电子表格用户中的可视化方式。

因此,您可以轻松地对两个进行等效性测试,例如:

Sub Test()

MsgBox [A1].Value = [A2].Value

End Sub

或者您可以在工作表公式中执行此操作:

=A1=A2

该公式应该返回TrueFalse,并且应该忽略该单元格的formatting