Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel使用vba比较多个单元格_Vba_Excel - Fatal编程技术网

Excel使用vba比较多个单元格

Excel使用vba比较多个单元格,vba,excel,Vba,Excel,我需要有关Excel VBA的帮助 我想知道如何比较同一行不同列中的多个单元格 我需要比较一些特定的细胞E3、G3、I3,找出其中是否有重复的细胞,并移除第一个细胞的重复细胞 注意:拖放功能用于填充数据 我试过用这样的东西 Dim R1, R2, R3 As Range Set R1 = Range("E3") Set R2 = Range("G3") Set R3 = Range("I3") If (R1 = R2 Or R1 = R3) Then MsgBox "Room Alrea

我需要有关Excel VBA的帮助

我想知道如何比较同一行不同列中的多个单元格

我需要比较一些特定的细胞E3、G3、I3,找出其中是否有重复的细胞,并移除第一个细胞的重复细胞

注意:拖放功能用于填充数据

我试过用这样的东西

Dim R1, R2, R3 As Range 
Set R1 = Range("E3")
Set R2 = Range("G3")
Set R3 = Range("I3")

If (R1 = R2 Or R1 = R3) Then 
MsgBox "Room Already Used!" 
            With Application
                .EnableEvents = False
                .Undo
                .EnableEvents = True
            End With
End If
但我需要比较更多的行和列。

首先要做的事情

Dim R1, R2, R3 As Range 
您可以在VB.Net中执行此操作,所有三个都将声明为
范围
,但在VBA中,您必须显式地将它们声明为
范围
,否则前两个将声明为
变量

Dim R1 As Range, R2 As Range, R3 As Range 
要比较多个行和列,可以使用循环。比如说

With Sheet1 '<~~ Change this to the relevant sheet
    For i = 3 To 8 '<~~ You actual row numbers
        If .Range("E" & i).Value = .Range("G" & i).Value Or _
           .Range("E" & i).Value = .Range("I" & i).Value Then
            '~~> do something
        End If
    Next i
End With
使用Sheet1'做点什么
如果结束
接下来我
以

另外,我建议使用数据验证列表,而不是拖放,这样您就不必使用
.Undo
。您只需清除单元格内容。

此处无需VBA。使用以下公式为单元格E3设置自定义数据验证规则:

=OR(ISBLANK(E3),COUNTIF($E3:$I3,E3)=1)
然后将单元格复制到G3和I3,并尽可能向下复制第3行。然后可以使用数据验证向导设置自定义错误消息


上面的公式假设您只需要检查同一行中的值(如您所述)。

我尝试了这一方法,如果不是拖放式的,则结果是正确的,但客户端希望工作表是拖放式的。