Excel シート内にデータの長いリストがあり、代わりにファイル ID を名前に変更します。問題は、同じファイル名に対して異なる ID があるかどうかを最初に確認する必要があることです。これにより問題が発生する可能性があります。
したがって、列 file_id と列 File_name については、同じファイル名に 2 つ以上の ID があるかどうかを比較する数式を作成するのに助けが必要です。
これは可能ですか?
ありがとう
Excel シート内にデータの長いリストがあり、代わりにファイル ID を名前に変更します。問題は、同じファイル名に対して異なる ID があるかどうかを最初に確認する必要があることです。これにより問題が発生する可能性があります。
したがって、列 file_id と列 File_name については、同じファイル名に 2 つ以上の ID があるかどうかを比較する数式を作成するのに助けが必要です。
これは可能ですか?
ありがとう
列 A が ID で、列 B が名前であると仮定すると、次の例では、名前ごとに複数の ID があるかどうかを確認します。セル C1 に貼り付けて下にドラッグします。
=IF(COUNTIFS(B:B,"<>"&B1,A:A,A1)>0,"MORE THAN ONE ID FOR THIS NAME","OK")
「COUNTIFS()」関数は、Excel 2007、2010 専用であることに注意してください。
古いバージョンの Excel を使用している場合は、次のような配列数式を使用する必要があります。
=IF(SUM(IF(A:A=A1,IF(B:B<>B1,1,0),0))>0,"MORE THAN ONE ID FOR THIS NAME","OK")
機能させるには、数式を入力するときに Ctrl+Shift+Enter を押す必要があります。
これが私の試みです。このコードが行うことは、ID が以前の ID と一致しないファイル名をマークすることです。下の写真を見てください:
VBAでやってみた
ALT + F11 を押して VBA に入ります。左側の列に「Project -VBA Project」と表示されます。この下に、Sheet1 をダブルクリックするか、作業中のシートの名前を入力します。
そこに次のコードを貼り付けます。
Sub mark()
Dim rng As Range
Dim row As Integer
Dim id As Integer
Dim name As String
Set rng = Sheets("Sheet1").Range("$A$2")
row = 0
Do Until rng.Offset(row, 0) = ""
id = rng.Offset(row, 0)
name = rng.Offset(row, 1)
Do While rng.Offset(row, 1) = name
If rng.Offset(row, 0) <> id Then
rng.Offset(row, 0).Interior.Color = 255
rng.Offset(row, 1).Interior.Color = 255
End If
row = row + 1
Loop
Loop
End Sub
私のコードでは、シートの名前は「Sheet1」です。シートの名前が別の場合は、コードの下の行を次のように編集します
Set rng = Sheets("Your sheet name").Range("$A$2")
私のコードでは、開始 Range(Cell) はA2として指定されています。開始セルがD2などの他のものである場合は、次のようにコードの行を編集します。
Set rng = Sheets("Your sheet name").Range("$D$2")
これらのセルをマークする代わりに何か他のことをしたい場合は、遠慮なくコメントしてください。
file_id に複数の列があり、File_name に 1 つの列しかなく、File_name 列のエントリが一意である場合は、非常に簡単です。列 A、B、および C に file_id 情報が含まれ、列 D に File_name が含まれているとします。列 E には、次の式を入力します。 =COUNTA(A2:C2)
これにより、File_name 列の左側の列にある file_id エントリの数がカウントされます。結果が 1 より大きい場合、複数の file_id が存在することがわかります。