プロが教えるわが家の防犯対策術!

パソコン初心者です。エクセルのA列に住所、B列に番地が入っているファイル11と別ファイルのA列に住所と番地入っているデ-タを比較して、一致したらファイル11のF列に”1”を表示させたいのですが教えていただけませんでしょうか?

A 回答 (4件)

質問文には、あいまいにならないように場合を分けて、対比して、書けないですか。


>エクセルの、
ブックA(ファイル11という名?)のSheet1の
A列 住所(漢字)
B列 番地(全角か、丁目番地か、具体例を書かないと。本件では不要でも書くものだ)
ブックB(>別ファイルと書かないで、具体名を書くものだ)のSheet1の・・
ーー
>デ-タを比較して
ブックAとブックBで
A列住所が一致 かつ!(AND条件)
B列番地
が一致している場合
>ブックA(ファイル11)のF列に1を表示
ーーー
ブックAのF列の
F1に
=IF(AND(A1=ブックBのA1,B1=ブックBのB1),"1","")
--
問題はブックBのSheet1のセルの表し方だが
[ブックBのブック名]Sheet1!A1
もっと一般的には
http://www.excel-jiten.net/formula/ref_other_boo …
の最後の「直接数式を入力する」を参照
「他ブック参照」でWEB照会すれば、説明は沢山ある。
ーー
他ブック参照はそのブックを開いておくこと。
http://www.efcit.co.jp/cgi-bin2/exqalounge.cgi?p …
    • good
    • 0

思われているここと違っていましたらすみませんが、参考までに次のコードをファイル11のマクロに貼り付けて実行してみてください。


A列に住所と番地が入っている別ファイルのファイル名を聞いてきますのでブック名を入力してください。(Book2ならBook2を入力)
A列に住所と番地が入っている別ファイルは、ファイル11と同じフォルダーに入れて実行してください。(開く必要はありません)
元を壊してはいけないので、Bookをコピーして試してみてください。

ファイル11のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック
 ↓
マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:比較)
 ↓
名前を入力しましたら、「作成」をクリック
 ↓
Microsoft Visual Basicの画面が開きますのでSub 比較()の下に次のコードをコピーして貼り付けてください。

'<定義>
Dim パス名, ファイル11, 別ファイル名, 別ファイル As String
Dim ファイル11シート名, 別ファイルシート名 As String
Dim ファイル11住所, 別ファイル住所 As String
Dim ファイル11カウント, 別ファイルカウント As Long
Dim ファイル11最大件数, 別ファイル最大件数 As Long
'<ファイルのオープン>
パス名 = ActiveWorkbook.Path & "\"
ファイル11 = ActiveWorkbook.Name
ファイル11シート名 = ActiveSheet.Name
別ファイル名 = InputBox("A列に住所と番地入っている「別ファイルのファイル名」を入力して下さい。")
別ファイル = パス名 & 別ファイル名 & ".xls"
Application.ScreenUpdating = False
Workbooks.Open Filename:=別ファイル
別ファイルシート名 = ActiveSheet.Name
Workbooks(別ファイル名).Sheets(別ファイルシート名).Select
Workbooks(別ファイル名).Sheets(別ファイルシート名).Range("A65536").End(xlUp).Select
別ファイル最大件数 = ActiveCell.Row
Workbooks(ファイル11).Activate
Workbooks(ファイル11).Sheets(ファイル11シート名).Select
Workbooks(ファイル11).Sheets(ファイル11シート名).Range("A65536").End(xlUp).Select
Workbooks(ファイル11).Sheets(ファイル11シート名).Range("F1:F65536").ClearContents 'F列クリア
ファイル11最大件数 = ActiveCell.Row
'<住所の比較>
ファイル11カウント = 1
別ファイルカウント = 1
Do
別ファイルカウント = 1
Do
ファイル11住所 = StrConv(Trim(Workbooks(ファイル11).Sheets(ファイル11シート名).Cells(ファイル11カウント, 1) & _
Workbooks(ファイル11).Sheets(ファイル11シート名).Cells(ファイル11カウント, 2)), vbWide)
別ファイル住所 = StrConv(Trim(Workbooks(別ファイル名).Sheets(別ファイルシート名).Cells(別ファイルカウント, 1)), vbWide)
If ファイル11住所 = 別ファイル住所 Then
Workbooks(ファイル11).Sheets(ファイル11シート名).Cells(ファイル11カウント, 6) = "1" 'F列
End If
別ファイルカウント = 別ファイルカウント + 1
Loop Until 別ファイルカウント > 別ファイル最大件数
ファイル11カウント = ファイル11カウント + 1
Loop Until ファイル11カウント > ファイル11最大件数
'<ファイルのクローズ>
Workbooks(別ファイル名).Activate
Workbooks(別ファイル名).Sheets(別ファイルシート名).Select
ActiveWorkbook.Close False 'ファイルのCLOSE
Application.ScreenUpdating = True
Workbooks(ファイル11).Activate
Workbooks(ファイル11).Sheets(ファイル11シート名).Select
MsgBox "比較が終了しました。 "
'****コピー貼り付けはここまで ****

Microsoft Visual Basicの画面を×で閉じます
 ↓
Excel画面のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック
 ↓
先ほど名前を付けたマクロを選択して「実行」をクリック

完全に一致していないとF列には1が入りませんのでご了承ください。(ただし数字の半角、全角は問題ありません)
    • good
    • 0

余計なことかもしれませんが、補足です。

BOOK1に式を入れてBOOK2のデータと比較したい場合、
EXACT関数の引数は、
=EXACT(C1,[Book2]Sheet1!$C1)
のような感じです。(C列に=A1&B1として文字列結合している場合)

上の式を入力する場合はフルパスを手入力してもかまいませんが、
=EXACT(C1,
まで入力したら、Book2のSheet1を選択し、C1セルをクリックしてEnterキーを押すと、
=EXACT(C1,[Book2]Sheet1!$C$1)
と入力されるので、あとは$C$1を$C1に直してあげれOKです(そうしたのは絶対参照を相対参照にし、下にコピーする際の準備の為)※C1としても問題ないと思います。

この回答への補足

申し訳ありません、BOOK1とBOOK2のデ-タは同じものではなく行番号は最初から3行があっているだけで、後は順番が違ったり、BOOK飲みのもの・()や<>の記号がついたものもありました。
回答を頂いた式はOKでした。 よろしかったら追加で、ご教授をお願いします。

補足日時:2008/03/29 23:33
    • good
    • 0

EXACT関数をつかえばOKかと。



EXACT(文字列1,文字列2)の形で2つの文字列を比較して、同じものならTRUE,違っていればFALSEを返します。
質問内容ですと、どこかの列に作業列をつくって、=A1&B1 ように文字列結合をして、それで比較するのが簡単です。また、TRUEの場合セルに1と表示させるにはIF関数で =IF(G1=TRUE,1,"") などとすればいいと思います(G列にEXACT関数の式が入っている場合の例です)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!