Excel VBA中两种细胞含量的比较

Excel VBA中两种细胞含量的比较,excel,vba,Excel,Vba,我需要比较宏中两个单元格的内容 RC1=2.0 RC2=2 我正在使用如果(RC1=RC2,“,”,“x”)为上述输入打印x,但2.0和2是相同的,我需要它是”,在这种情况下,请首先建议 你试图比较两种不同的数据类型,假设一个是没有十进制值的,另一个是十进制的。 我建议你仔细看看 因此,我们需要为两个具有CDbl()的单元格设置一个相同的值,以便将它们转换为double。简单地说,由于整数是双精度的一种更简单的形式,因此我们将使用两者中更完整的类型 比较类型的代码 Sub COMPARING_T

我需要比较宏中两个单元格的内容

RC1=2.0
RC2=2


我正在使用
如果(RC1=RC2,“,”,“x”)
为上述输入打印
x
,但2.0和2是相同的,我需要它是
,在这种情况下,请首先建议

你试图比较两种不同的数据类型,假设一个是没有十进制值的,另一个是十进制的。 我建议你仔细看看

因此,我们需要为两个具有
CDbl()
的单元格设置一个相同的值,以便将它们转换为
double
。简单地说,由于
整数
双精度
的一种更简单的形式,因此我们将使用两者中更完整的类型

比较类型的代码

Sub COMPARING_TYPES()

Dim a As Double, b As Double

' Let's assume the both values are numeric
a = CDbl(Cells(1, 1))
b = CDbl(Cells(2, 1))

If a = b Then
    ' Other code to execute when the values are matching
End If

End Sub

这都是考虑到您想要比较VBA代码中的数字。

您失败的“代码”表明您只是在使用一个公式:

if(RC1=RC2,"''","x")
如果您乐于使用公式进行测试,您可以使用:

IF(VALUE(RC1)=VALUE(RC2),"''","x")

请注意,空白单元格的
值为0(零),因此空单元格将与包含
0.00的单元格匹配。我的问题可能重复,即使用上述方法比较2和2.0后返回false,是否有其他的方法来比较和得到结果是真实的?尝试使用Prakash Singh。请考虑将正确的答案改为@ CLR,我的实际上是如拉尔夫解释的那样关闭。Excel不关心是否将代码< >整数< /代码>与<代码>双< /代码>,<代码>字节< /代码>,或<代码>长< /代码>。考虑<代码> DimaA为整数,B为字节,C为双,D为长< < /代码>,<代码> B=2 < /COD>,<代码> C=2 < /代码>,<代码> d=2 < /代码>之后,您可以验证<代码> MSGBOX A= B是相同的<代码>真< /代码> AS <代码> MSGBOX B= C 和<代码> MSGBOX C= D (自动/隐式转换)。因此,@CLR是正确的,唯一可能的问题可能是
RC1
包含字符串
2.0
(而不是格式为一个十进制的数字)。因此,他/她建议将字符串转换为具有
值的数字。
。你确实是对的,我只是尝试了一下,无论变量的类型是什么,它都有效。很抱歉给你带来不便。我不知道为什么OP给了我正确的答案。没有任何不便。别担心。另外,你的评论对我来说也是正确的大多数编程语言,如C++、java、SQL等,但是,VBA非常宽容,允许很多其他的实际编程语言中不可想象的事情。这不是唯一的方面。其他的是(1)隐式转换(2)不合格的引用(3)。无需将对象设置为
Nothing
进行垃圾收集…等等。为了防止OP真的使用VBA(如标签所示),您可能还希望将VBA解决方案包含在
Val()
中,而不是
Value()
MsgBox Val(“2.0”)=2
但使用上述公式,我将无法验证1.9999和1等其他情况,如果使用youNo建议的公式,它将返回true,
值(1)
肯定不等于该公式的
值(1.9999)
。它将返回
FALSE