人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelの質問です。
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>

1289221935
●拡大する

●質問者: moon-fondu
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Excel xls アムステルダム セル データ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●100ポイント ベストアンサー
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 ● hathi
●40ポイント

多分 前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>


3 ● Silvanus
●50ポイント

都市.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,"○","×"),"")」

を貼って、それを下方のセルへコピペ。

これで恐らく大丈夫かと。

◎質問者からの返答

なるほどです、関数でもできました!

ありがとうございます(^_^)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ