2回比較して、一致すれば隣の列に○印をつけたいです。
Excelで今、「都市.xls」というブックのSheet1のA列には、
香港
ロサンゼルス
東京
・
・
・
と、都市の名前が並んでいます。
そしてC列には、
U.S.A
中国
日本
と、国名が並んでいます。
同じく、「街.xls」というブックのSheet1には、
東京
香港
アムステルダム
・
・
・
と、街の名前が並んでいます。
そしてC列には、
日本
中国
U.S.A
と、国名が並んでいます。
マクロによって、2つのブックおよびシートのA列を比較し、A列のデータが一致すれば、B列に、○か×かの判定をします。
一致した場合、隣の(C列の同じ行の)セルの比較に入ります。
一致しなかったものは、終了します。
同じく、C列同士のデータが一致すれば、隣のD列に、一致したという印(○印など)を挿入したいのです。
B列、D列にもしデータがあった場合は、強制的にB列、D列を挿入する形でも構いません。
何とかこの2段階に及ぶデータ比較を、マクロで出来ないでしょうか?
よろしくお願いします<m(__)m>
Sub チェック() a = "街.xls" a1 = "Sheet1" '街のシート名 z = "都市.xls" z1 = "Sheet1" '都市のシート名 For b = 1 To 65536 If Workbooks(z).Worksheets(z1).Cells(b, "A") = "" Then Exit For f = 0 For c = 1 To 65536 If Workbooks(a).Worksheets(a1).Cells(c, "A") = "" Then Exit For If Workbooks(a).Worksheets(a1).Cells(c, "A") = Workbooks(z).Worksheets(z1).Cells(b, "A") Then Workbooks(z).Worksheets(z1).Cells(b, "B") = "○" Workbooks(a).Worksheets(a1).Cells(c, "B") = "○" f = 1 If Workbooks(a).Worksheets(a1).Cells(c, "C") = Workbooks(z).Worksheets(z1).Cells(b, "C") Then Workbooks(z).Worksheets(z1).Cells(b, "D") = "○" Workbooks(a).Worksheets(a1).Cells(c, "D") = "○" Else Workbooks(z).Worksheets(z1).Cells(b, "D") = "×" Workbooks(a).Worksheets(a1).Cells(c, "D") = "×" End If End If Next c If f = 0 Then Workbooks(z).Worksheets(z1).Cells(b, "B") = "×" Next b For b = 1 To 65536 If Workbooks(a).Worksheets(a1).Cells(b, "A") = "" Then Exit For If Workbooks(a).Worksheets(a1).Cells(b, "B") = "" Then Workbooks(a).Worksheets(a1).Cells(b, "B") = "×" End If Next b End Sub
都市と街のブックを両方開いた状態で実行します。
マクロは 都市か街のどちらかに 入れればいいです。
A列がある分チェックしますので 都市名がなければ セルは なしの状態にしてください。
Sub チェック() a = "街.xls" a1 = "Sheet1" '街のシート名 z = "都市.xls" z1 = "Sheet1" '都市のシート名 For b = 1 To 65536 If Workbooks(z).Worksheets(z1).Cells(b, "A") = "" Then Exit For f = 0 For c = 1 To 65536 If Workbooks(a).Worksheets(a1).Cells(c, "A") = "" Then Exit For If Workbooks(a).Worksheets(a1).Cells(c, "A") = Workbooks(z).Worksheets(z1).Cells(b, "A") Then Workbooks(z).Worksheets(z1).Cells(b, "B") = "○" Workbooks(a).Worksheets(a1).Cells(c, "B") = "○" f = 1 If Workbooks(a).Worksheets(a1).Cells(c, "C") = Workbooks(z).Worksheets(z1).Cells(b, "C") Then Workbooks(z).Worksheets(z1).Cells(b, "D") = "○" Workbooks(a).Worksheets(a1).Cells(c, "D") = "○" Else Workbooks(z).Worksheets(z1).Cells(b, "D") = "×" Workbooks(a).Worksheets(a1).Cells(c, "D") = "×" End If End If Next c If f = 0 Then Workbooks(z).Worksheets(z1).Cells(b, "B") = "×" Next b For b = 1 To 65536 If Workbooks(a).Worksheets(a1).Cells(b, "A") = "" Then Exit For If Workbooks(a).Worksheets(a1).Cells(b, "B") = "" Then Workbooks(a).Worksheets(a1).Cells(b, "B") = "×" End If Next b End Sub
都市と街のブックを両方開いた状態で実行します。
マクロは 都市か街のどちらかに 入れればいいです。
A列がある分チェックしますので 都市名がなければ セルは なしの状態にしてください。
ありがとうございます、うまくいきました!
多分 前2回答者と同じか、もっといい加減なものですが、
Sub test() Dim B都市 As Worksheet Dim B街 As Worksheet Dim i, sl, el Set B都市 = Workbooks("都市.xls").Worksheets("Sheet1") Set B街 = Workbooks("街.xls").Worksheets("Sheet1") sl = 1 el = 30 For i = sl To el If B都市.Cells(i, 1) <> "" Then If B都市.Cells(i, 1) = B街.Cells(i, 1) Then B都市.Cells(i, 2) = "○" B街.Cells(i, 2) = "○" If B都市.Cells(i, 3) <> "" Then If B都市.Cells(i, 3) = B街.Cells(i, 3) Then B都市.Cells(i, 4) = "○" B街.Cells(i, 4) = "○" Else B都市.Cells(i, 4) = "×" B街.Cells(i, 4) = "×" End If End If Else B都市.Cells(i, 2) = "×" B街.Cells(i, 2) = "×" End If End If Next End Sub
ありがとうございます<m(__)m>
都市.xlsのセルB1に
「=IF(COUNTIF([街.xls]Sheet1!$A:$A,A1),"○","×")」
を貼って、それを下方のセルへコピペ、同じくセルD1に
「=IF(B1="○",IF(VLOOKUP(A1,[街.xls]Sheet1!$A:$C,3,FALSE)=C1,"○","×"),"")」
を貼って、それを下方のセルへコピペ。
街.xlsのセルB1に
「=IF(COUNTIF([都市.xls]Sheet1!$A:$A,A1),"○","×")」
を貼って、それを下方のセルへコピペ、同じくセルD1に
「=IF(B1="○",IF(VLOOKUP(A1,[都市.xls]Sheet1!$A:$C,3,FALSE)=C1,"○","×"),"")」
を貼って、それを下方のセルへコピペ。
これで恐らく大丈夫かと。
なるほどです、関数でもできました!
ありがとうございます(^_^)
ありがとうございます、うまくいきました!