2016-08-03 12 views
2

Excel VBAのヘルプが必要です。複数のセルとvbaを比較するExcel

同じ行の複数のセルを比較する方法を知りたいが、異なる列にある。

私は特定の細胞E3、G3、I3のようなものを比較し、そのいずれかが重複しているかどうかを調べ、最初に入れたものの重複を取り除く必要があります。

注:ドラッグアンドドロップ機能を使用してデータを入力します。

Image of Spreadsheet

私はこの

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 

のようなものを使用してみました。しかし、私はさらに多くの行と列を比較する必要があります。

答えて

3

最初のものが最初です。

Dim R1, R2, R3 As Range 
あなたはVB.Netでこれを行うことができますし、すべての3つは Rangeとして宣言されますが、VBAで、明示的に他の Range最初の二つは Variant

Dim R1 As Range, R2 As Range, R3 As Range 
として宣言されるようにそれらを宣言する必要があり

複数の行と列を比較するには、ループを使用できます。あなたが.Undoを使用する必要がないように、たとえばまた

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 

代わりドラッグ&ドロップ&のために、私はデータ検証リストを使用することをお勧めします。セルの内容をクリアするだけです。

+0

これを試してみましたが、ドラッグアンドドロップではないにもかかわらず、クライアントがワークシートをドラッグアンドドロップ型にしたいと思っていました。 – user6670582

0

ここにVBAは必要ありません。次の式でセルE3用のカスタムデータ検証ルールを設定します。

=OR(ISBLANK(E3),COUNTIF($E3:$I3,E3)=1) 

その後G3とI3にセルをコピーし、限り、あなたが必要とダウン3行をコピーします。その後、データ検証ウィザードを使用してカスタムエラーメッセージを設定できます。

上記の式では、同じ行の両端の値を確認する必要があることを前提としています。

関連する問題