• ベストアンサー

二つのリストの様々な比較

matsu_junの回答

  • ベストアンサー
  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.1

C列にはA列のみに入っているデータ、D列にはB列のみに入っているデータ、E列にはA列もしくはB列にも入っているデータ、F列にはA列にもB列にも入っているデータを記入していくマクロです。以下をコピーして、実行してみてください。 Private Sub MakeList() Dim RowNum(6) As Long Dim i, j As Long 'Aのみ、Bのみ、AまたはB、AかつBの列に元々入っていた値を消去(初期化) For i = 3 To 6 RowNum(i) = 2 For j = 2 To Cells(65536, i).End(xlUp).Row Cells(j, i).Value = "" Next j Next i 'A列に入っている数字がB列に入っているかどうか確認 For RowNum(1) = 2 To Cells(65536, 1).End(xlUp).Row If Cells(RowNum(1), 1).Value <> "" Then Cells(RowNum(5), 5).Value = Cells(RowNum(1), 1).Value 'A列に入っている数字は必ず「AまたはB」列 (E列)に入る。 RowNum(5) = RowNum(5) + 1 With ActiveSheet.Columns(2) Set x = .Find(Cells(RowNum(1), 1).Value, LookAt:=xlWhole) If x Is Nothing Then 'A列のある行の数字がB列にない場合、「Aのみ」列 (C列)に入る Cells(RowNum(3), 3).Value = Cells(RowNum(1), 1).Value RowNum(3) = RowNum(3) + 1 Else 'A列のある行の数字がB列にある場合、「AかつB」列 (F列)に入る Cells(RowNum(6), 6).Value = x.Value RowNum(6) = RowNum(6) + 1 End If End With End If Next RowNum(1) 'B列に入っている数字がA列に入っているかどうか確認 For RowNum(2) = 2 To Cells(65536, 2).End(xlUp).Row If Cells(RowNum(2), 2).Value <> "" Then With ActiveSheet.Columns(1) Set x = .Find(Cells(RowNum(2), 2).Value, LookAt:=xlWhole) If x Is Nothing Then 'B列のある行の数字がA列にない場合、「Bのみ」列 (D列)に入り、かつ、「AまたはB」列 (E列)に追記される。 Cells(RowNum(4), 4).Value = Cells(RowNum(2), 2).Value Cells(RowNum(5), 5).Value = Cells(RowNum(2), 2).Value RowNum(4) = RowNum(4) + 1 RowNum(5) = RowNum(5) + 1 End If End With End If Next RowNum(2) End Sub

ennkai
質問者

お礼

ご解答ありがとうございます! 自宅PCで試したところ 上手く走りました! 自分でマクロを組む勉強を始めてはいるのですが まだ自動記録や簡単な関数くらいしか 使えないので ただただありがたいです。 時間を掛けてじっくり内容を勉強したいとおもいます ありがとうございました

関連するQ&A

  • EXCELエクセルで、複数の文字列で連続した検索をする方法

    データの比較、検索に関する質問です。 どうぞよろしく願い致します。 2種類のデータがあり、 列Aはメールを送信する顧客のメールアドレスのリスト、 列Bはメールを送信してはいけないメールアドレスのリストです。 列Aに列Bの各データで検索をかけ、 列Aの中に列Bのデータが含まれていないか(=送ってはいけないアドレスが含まれていないか) を調べたいのです。 つまり、 列Bの1行目の文字列で列Aを検索 ↓ 列Bの2行目の文字列で列Aを検索 ↓ 列Bの3行目の文字列で列Aを検索 ・ ・ ・ このようなことを自動化したいのですが、 方法はないでしょうか? WEB上を検索したのですが、欲しい情報は見つかりませんでした。 初歩的なマクロは理解できます。 どなかたご教授頂ければ幸いです。

  • マクロでVLOOKUPを使用した複数シートのデータを一覧シートへ

    VLOOKUP関数を使用してシートを跨いでデータを一覧へもってくることができないようなので、 マクロを使用して以下のような作業をしたいです。 【Sheet1】:データベース(1)    A列  B列 1行 0001  あ 2行 0003  う 【Sheet2】:データベース(2)    A列  B列 1行 0002  い 2行 0004  え 3行 0005  お というデータから 【Sheet3】:一覧    A列  B列 1行 0001  あ 2行 0002  い 3行 0003  う 4行 0004  え 5行 0005  お を作成したい。 データベース(1)(2)は各々で全て手入力をし、 一覧のA列は予め入力しておき、B列の情報だけを一覧シートにもってくるという内容です。 (実際はセル数もシート数ももっと多いです) Application.WorksheetFunction.VLookup()を使うのかな? とは過去の質問から、なんとなく想像はつくのですが 素人なもので、例文を見てもよくわかりません・・・。 ご教授いただけると大変助かります。 よろしくお願い致します。

  • A列(10行)とB列(10行)の全ての組み合わせをC列にリストアップしたい。

    何度もすみません。 前回の質問で文字列の組み合わせの方法は理解いたしました! 本当にありがとうございます。 追加で質問になるのですが、タイトルにあるように(※数字は仮です) A列(10行)とB列(10行)の全ての組み合わせをC列にすべて(100行?)リストアップしたいと考えています。 また並び方は A1 A2 A3 ・ ・ ・ B1 B2 ・ ・ というようにしたいです。 このようにするには C列にどのような関数を入れればいいのでしょうか? どうかよろしくお願いいたします。

  • エクセルで行を比較して結果を獲る

    宜しくお願いします。 A列、B列、C列それぞれの列に200~250行のデータ(データは6~7桁の数字)があります。 で...このデータを列ごとに比較して求めたいのが、 *A列にあって、B列とC列にないデータの値 *B列にあって、A列とC列にないデータの値 の2点の条件をクリアするデータのリストを作りたいのですが、(リストはD列でもどこでも構いません) どの様にしたら求めれるでしょうか? VBAはあまり自信がありませんが少しかじってますので、最悪はVBAでもいいので宜しくお願い致します。

  • Excel 関数でcountifの複数条件

    Excelで条件にあった個数をカウントする関数はcountifですが、 複数の条件にあった個数をカウントする場合、countifの式はどうすればよいのでしょうか。 例えば A列の1行から20行で"○"が入っている個数のカウントは =countif(a1:a20,"○")ですが A列の1行から20行で"○"が入っていて、なおかつ B列の1行から20行に"1"が入っている個数のカウントを知りたいです。 =countif(a1:a20,"○")and(b1:b20,"1")ではないですよね。 よろしくご教授願います。

  • ExcelのCOUNTIF関数での<1>等の意味

    こんにちは。 COUNTIF関数で質問があります。 以下のようなデータがあります。 A列にデータ、B列にCOUNTIF関数が入っていてその結果を返しているとします。 (いずれも1行目~6行目までにデータが入っています) (A列)          (B列) <1>りんご        2(=COUNTIF($A$1:$A$6,A1)) <2>みかん        2(=COUNTIF($A$1:$A$6,A2)) パイナップル      1(=COUNTIF($A$1:$A$6,A3)) 桃             1(=COUNTIF($A$1:$A$6,A4)) りんご          1(=COUNTIF($A$1:$A$6,A5)) アボカド         1(=COUNTIF($A$1:$A$6,A6)) 疑問なのは、厳密に言うと上の条件だとB列は全部1になるのではないかと思ったのに、なぜ1・2行目は2を返してくるのでしょうか、ということです。 <1>や<2>が頭についたものでそのようになっているので、これは何か意味があると思いました。 どのような意味を持つのでしょうか。 また、<1とか<をつけても自分が思っていたような結果が返ってこないので、そもそも上のような例で<がつくとどういうことになるのでしょうか。 大変お手数ですが、よろしくお願いいたします。

  • 複数のエクセルファイルからのデータの抽出、一覧の作成について

    エクセルでのデータ整理の件で以下の質問があります。 以下のことができるようなマクロは組めませんでしょうか? 同一フォルダ(仮に、「C:\Sample」とします)に日々の業務データが 入力されたエクセルファイルが300個ほどあります。 各ファイル内にはSheetが5枚あり、各ファイルで入力されているデータは すべて同一のフォーマットです(Sheet毎では異なる。 例えば、Sheet1の1行A列には日付データ、Sheet2の2-5行B列には名前データ、といった感じです)。 これら300個のファイルから、これまでのデータを一覧にしたリストを 新規に作りたいと考えています(作成場所はどこでも構いません)。 例えばSheet1の、1列目にはファイル名、2列目には各ファイルSheet1の1行A列の日付データ、 3-6列目には各ファイルSheet2の2-5行B列の名前データ・・・、といった具合です。 (縦に日付が並び、1行内に各ファイルのデータが入力されている、 といった風にしたいと考えています。) 参考になりそうな過去の回答もありましたので、いくつか試してみたものの、 うまくいきませんでした(私はマクロは少しかじった程度です)。 一個ずつコピペでは非常に骨が折れ、難儀しております。 ややこしい質問ではございますが、ご回答お待ちしております。

  • Excel2003 データ比較

    お世話になります。 データを比較しています。 A列に100ぐらいB列に110ぐらいとしましょう。 人名です。 AとBに同じ名前があるかどうか調べたいんです。 COUNTIF関数で調べましたが、 COUNTIF(範囲、条件)=1 みたいな関数でしらべましたが、 なぜか全部FLASE・・・・(2つ以上データがあるってこと?) データの量がちがうのに・・。 おかしいです。 全部文字の大きさは10になっているし、 なにがなんだかわかりません。 だれかおしえてください。

  • ドロップダウンリストを使用して関連した値を入力したいです。

    ドロップダウンリストを使用して関連した値を入力したいです。 Excel2007を使用していますが、 リストから項目を選択した時に、 各セルに選択した項目に関連する値を入力させたいです。 例えば、 リストから「ライオン」を選択した場合 A列1行目に「肉食」 A列2行目に「ネコ科」 A列3行目に「大型」 リストから「うさぎ」を選択した場合 A列1行目に「草食」 A列2行目に「うさぎ科」 A列3行目に「小型」 今はコンボボックスにドロップダウンリストを作成して一覧参照していますが、どう関連付けよいものか苦慮しております。 マクロを使わないと対処できない気もしますが、良い方法があれば教えてください。

  • Excelで文字列リストを用いた一括置換方法

    エクセルについて質問させてください。説明が難しいのですが、A列、B列、C列にそれぞれ以下の ように記入してあったとします。 .....A列.........................B列.................................................C列 ....────────────────────────────── 1│ a │ http://○○.co.jp/img_1.jpg │ http://○○.co.jp/img_2.jpg 2│ b │ http://○○.co.jp/img_1.jpg │ http://○○.co.jp/img_2.jpg 3│ c │ http://○○.co.jp/img_1.jpg │ http://○○.co.jp/img_2.jpg このリストの「img」と記載してある部分をA列に記入してある文字列に一括で置き換えた いのですが、そのような事は可能でしょうか? ▼ このように置き換えしたいです ▼ .....A列.........................B列.................................................C列 ....────────────────────────────── 1│ a │ http://○○.co.jp/a_1.jpg │ http://○○.co.jp/a_2.jpg 2│ b │ http://○○.co.jp/b_1.jpg │ http://○○.co.jp/b_2.jpg 3│ c │ http://○○.co.jp/c_1.jpg │ http://○○.co.jp/c_2.jpg 最初は1行ずつ地道に置き換え作業を行っていたのですが、こういったリストが数千行にも及び 流石にそれでは効率が悪すぎると思い至りました。マクロ等で可能かどうか調べてみたんですが エクセル初心者級の私には難し過ぎて理解できません・・ ちなみに画像のURLが記載してある列はC列以降も続いています よろしければお知恵を拝借したいです。よろしくお願いします