Excel の行内のセルの組み合わせが一意であることを検証する

Excel の行内のセルの組み合わせが一意であることを検証する

3 つの列 (A、B、C) が各行の一意の識別子を形成する Excel シートがありますが、列の値は一意ではありません。例:

   ABC    REF   001
   ABC    REF   002
   ABC    REF   003
   ABC    DOC   001
   ABC    DOC   002
   ABC    DOC   003

上記の行は、同じ値の組み合わせを持つ行がないため有効です (たとえば、列 B と C が重複している場合でも、「ABC REF002」を持つ行は 2 つありません)。

ユーザーが列 A、B、C に別の行の組み合わせと一致する値の組み合わせを入力した場合、検証エラーが発生するような Excel 検証を追加するにはどうすればよいですか?

答え1

ワークシート コード領域に次のイベント マクロを入力します。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Long, st As String, J As Long, k As Long
    Dim CH As String

    If Intersect(Range("A:C"), Target) Is Nothing Then Exit Sub
    CH = Chr(1)
    I = Target.Row
    J = Cells(Rows.Count, 1).End(xlUp).Row
    st = Cells(I, 1).Text & CH & Cells(I, 2).Text & CH & Cells(I, 3).Text

    For k = 1 To J
        If k <> I Then
            stk = Cells(k, 1).Text & CH & Cells(k, 2).Text & CH & Cells(k, 3).Text
            If st = stk Then
                MsgBox "Combination already in use:" & vbCrLf & stk
                Exit Sub
            End If
        End If
    Next k

End Sub

ワークシート コードなので、インストールが非常に簡単で、自動的に使用できます。

  1. Excelウィンドウの下部にあるタブ名を右クリックします
  2. 「コードの表示」を選択すると、VBEウィンドウが表示されます。
  3. 内容を貼り付けてVBEウィンドウを閉じます

不安な点があれば、まずはトライアルシートで試してみてください。

ブックを保存すると、マクロも一緒に保存されます。2003以降のバージョンのExcelを使用している場合は、ファイルを次のように保存する必要があります。.xlsmそれよりも.xlsx

マクロを削除するには:

  1. 上記のようにVBEウィンドウを表示します
  2. コードを消去する
  3. VBEウィンドウを閉じる

マクロ全般の詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/excel/getstarted.htm

そして

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

イベント マクロ (ワークシート コード) の詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/excel/event.htm

これを機能させるにはマクロを有効にする必要があります。

関連情報