• ベストアンサー

こういう場合のリストアップ方法

表Aと表Bがあり、それぞれ追番がふってあります。 表Bは表Aを更新したものです。 つまり、表Bには表Aの追番もあり、また新規の追番もあります。表Aの追番が表Bでは消えている場合もあります。 -具体例- 表Aの追番:1,2,3,4,5,6,7,8,9,10 表Bの追番:2,3,4,6,7,8,10,11,12 そこで、「表Aにはあったが、表Bには無い追番を抽出する方法」を EXCELまたはACCESSを使って教えて下さい。ただし、新規の追番は外します。具体例で言えば、1,5,9がこれに相当します。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.1

ACCESSの場合 クエリーでできます。 クエリーで 表Aの追番 と 表Bの追番 を結合します。 結合プロパティは  ’表A’の全レコードと’表B’の同じ結合フィールドのレコードだけを含める にします。 フィールドは 表Aの追番 と 表Bの追番 を 選択し、 表Bの追番 の 抽出条件を Is Null にします。

jyadoh
質問者

補足

Is Nullってどういう意味ですか?

その他の回答 (4)

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.5

>Is Not Nullは、「データがある」と言う事ですか? その通りです。

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.4

> Is Nullってどういう意味ですか? Is Null は ”データーが無い”という意味です。 ですから、 表Aの追番 に有って、 表Bの追番が 無いものを 検索しています。

jyadoh
質問者

補足

”表Aの追番に有って”ということが前提になるんですね。”表Bの追番が空白”と言う意味と勘違いしました。 では、Is Not Nullは、「データがある」と言う事ですか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

エクセルVBAのマッチングのロジックで sheet1,sheet2が新旧シートとして、コピーを取るなりして、各々を追番列でソートします。 K1やk2 = "999999"の部分は番号桁数だけ9を並べて下さい。MsgBoxの部分は、適当な処理に変えてください。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") bothread = "y" d1 = sh1.Cells(1, 1).CurrentRegion.Rows.Count d2 = sh2.Cells(1, 1).CurrentRegion.Rows.Count i = 1: j = 1 r1: If i > d1 Then K1 = "999999" Else K1 = sh1.Cells(i, "a") End If If bothread <> "y" Then GoTo kmp r2: If j > d2 Then k2 = "999999" Else k2 = sh2.Cells(j, "a") End If kmp: If K1 > k2 Then GoTo hi If K1 = k2 Then GoTo eq If K1 < k2 Then GoTo lw hi: j = j + 1 GoTo r2 eq: If K1 = "999999" Then End i = i + 1 j = j + 1 bothread = "y" GoTo r1 lw: i = i + 1 MsgBox K1 GoTo r1 End Sub ------------- #2のように関数式で、1つ考えました。 VLOOKUP関数の応用です。 sheet1の空き列B1に =VLOOKUP(A1,Sheet2!$A$1:$A$5,1,FALSE)を入れ、下まで 複写する。$A$5は最下行を入れてください。 Sheet2にあればB列に同じ数字、見つからなければ#/Aが出ます。これはISERRORなどで、表現を変えられます。Sheet2はソートしておく必要はありません。

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.2

表AとBが同一ブックで、違うワークシートの場合で考えました。 表AをワークシートA、表BをワークシートBとします。 それぞれA列の先頭から下方向に追番がふってあるとして、 ワークシートAにB列を追加し、B1に =COUNTIF(ワークシートB!A:A,A1)という計算式を入力し、下までコピーします。 すると、このB列にはワークシートBに存在する番号がA列にある場合は「1」と無い場合は「0」と表示されます。 この「0」をオートフィルタで抽出するのではどうでしょう? あ、オートフィルタなら一番上に列を追加しなくてはなりませんね。

関連するQ&A