• 締切済み

【エクセルの関数】で文字列を比較が解りません

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.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_books.html の最後の「直接数式を入力する」を参照 「他ブック参照」でWEB照会すれば、説明は沢山ある。 ーー 他ブック参照はそのブックを開いておくこと。 http://www.efcit.co.jp/cgi-bin2/exqalounge.cgi?print+200703/07030155.txt

すると、全ての回答が全文表示されます。
  • kuma3f
  • ベストアンサー率63% (28/44)
回答No.3

思われているここと違っていましたらすみませんが、参考までに次のコードをファイル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が入りませんのでご了承ください。(ただし数字の半角、全角は問題ありません)

すると、全ての回答が全文表示されます。
  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.2

余計なことかもしれませんが、補足です。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としても問題ないと思います。

soukaku_1
質問者

補足

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

すると、全ての回答が全文表示されます。
  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.1

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

すると、全ての回答が全文表示されます。

関連するQ&A