• ベストアンサー

エクセルで 二行の値をマッチさせるには?

A列とB列があるとして、それぞれランダムな数字が入っています A列には100個の値、B列には150個の値が入っていて、 Bの列にはA列の値がすべて入っています A列の値が、B列に存在するか検索し、 A列の値がB列になかった場合、印をつけるか 削除(「-」かなにかに置換でもよい)できるような関数はありますか? 例) こういうデータを A   B 1   9 2   8 3   7 4   6 5   5 6   4 7   3    2    1 こうしたい A   B 1   1 2   2 3   3 4   4 5   5 6   6 7   7 該当なしの値(8,9)は 最終的に抹消したいのです ----------- MATCHでは、検索値が一つしか入れられず A列すべての値を、B列すべてにマッチできませんでした (やり方が悪かったのかも) IFで、Aの値がBに存在すればTRUE、存在しなければ「-」に置換 ・・・・というのをやってみたのですが、 たぶん書き方が悪くて(?)うまく動きませんでした 私は独学で基礎をきちんと理解できているか 自分で自信がないのですが、どうぞよろしくお願いします

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

  • ベストアンサー
  • hiro-ss16
  • ベストアンサー率42% (18/42)
回答No.3

C1 に下の式を入れて 150行までコピーします。これでC列にはA列と 同じ数値が表示されると思います。 (A列に無い数値の部分は空白になります) 次に C1~C150を選んで「コピー」→「形式を選択して貼り付け」 →「値」のみ→「OK」 貼り付け先は同じ場所(C1~C150)です。 最後に C1~C150 を選んで「データ」→「並び替え」で昇順に並び 変えればよいでしょう。 C1 に入れる式   =IF(ISERROR(MATCH(B1,$A$1:$A$100,0))," ",B1)

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

その他の回答 (5)

  • 374649
  • ベストアンサー率38% (203/527)
回答No.6

Excel関数ではなくマクロで組めば簡単なので書いてみました。 考え方は、A1の値をB列 RANGE("B1:B150") の値と一致したものをC1に書き出す、この動作を A1からA100 迄繰り返すというだけです。 Sub 抽出() Dim i As Integer Dim j As Integer 'A列の1行から100行の(値)数に一致したB列の(値)数をC列に書き出す For i = 1 To 100 'A列のデータは100行 For j = 1 To 150 'B列のデータは150行 If Cells(i, 1) = Cells(j, 2) Then Cells(i, 3) = Cells(j, 2) 'C列に100行書き出す End If Next j Next i End Sub 誰でも最初は"初めて"です、参考になれば挑戦してみてください。

すると、全ての回答が全文表示されます。
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.5

何をやりたいのか今一解らない。 条件が >Bの列にはA列の値がすべて入っています なら、動作の >A列の値が、B列に存在するか検索 すべて入っているなら検索するまでもなく存在するということですよね。 (それとも場所を特定したいのかな?) >A列の値がB列になかった場合 この時点で条件と矛盾している。 最終的な[こうしたい]の表を見ると、おそらく動作のA列とB列を入れ違えたのかと思うけど、それだと単純にA列をコピーするだけで目的の状態になると思う、計算式なんか必要ないのでは? B列のデータの位置情報や、重複データも必要なら意味も解るけど、最終の表はソートされているし・・・・??

すると、全ての回答が全文表示されます。
  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.4

COUNTIF関数ではいけませんか C1 =IF(COUNTIF(A:A,B1)=0,"-","TRUE") 下方にオートフィル >該当なしの値(8,9)は最終的に抹消したいのです。 B列C列を選択し、並べ替えをすれば"-"が下方に並べ替えられますのでその行を削除で

すると、全ての回答が全文表示されます。
  • soixante
  • ベストアンサー率32% (401/1245)
回答No.2

>Bの列にはA列の値がすべて入っています のに、 >A列の値が、B列に存在するか検索 するのですか? 例示のケースで言えば、B列のそれぞれの数値について、A列にあるかどうかが分かればよいということでしょうか。 例えば、A1:A100、B1:B150 にデータがあるとして、 C1に、 =IF(ISERROR(MATCH(B1,$A$1:$A$100,0),"-",B1) と入れて、150行まで引っ張ってみては。 お求めの結果と違うならすみません。

すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

C1に、下記数式を入力 =MATCH(B1,$A$1:$A$7,0) C1セルを下方に、B列最下行と同じ行までコピー (C1セルを選択、選択枠の右下角の■をダブルクリックでフィルコピーされます) C列を主キーにして、B列とC列を「昇順」で「並べ替え」 といった操作でどうでしょうか。

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

関連するQ&A