• ベストアンサー

Excelで一致しない数字を返し、一箇所にまとめるには?

以前も似たような質問したのですが、よくわからなくなってしまったのでまたお願いします。 A列 B列 C列 1052 1052 1033 1230 1033 1044 1335 1044 1560 1335 1650 1650 このように、「A列とB列を比較して、A列にない数字を、C列に上から順に揃えて抽出する」にはどのようにすればよいのでしょうか? 文字列は300行位になります。 バージョンは2002です。 VBはよくわからないので、簡単にできる方法があれば幸いです。

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

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.1

こんばんは フィルタオプションでの操作例です データ範囲がA1:B300まであるとして   A列 B列 C列 D列 1 data1 data2 data2 2 1052 1052     式 3 1230 1033 4 1335 1044 5 1560 1335 6 1650 1650 :  : : 300  : : 式 セルD2に =COUNTIF($A$2:$A$300,B2)=0 ・1行目に適当な項目名を記載  C1(抽出場所に抽出対象:B列 と同様の項目名を記載 ・A1:B300までを選択 ・メニューのデータ フィルタ フィルタオプション  抽出先 指定した範囲 にチェク  リスト範囲 $A$1:$B$300  検索条件範囲 $D$1:$D$2 ←D1は空白 D2が条件数式  抽出範囲 $C$1 で試してみて下さい

gilfffo
質問者

お礼

おおおお!すばらしい!できました。 上手にいきました。ありがとうございます!!

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

その他の回答 (2)

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

C1に=IF(ISERROR(MATCH(B1,$A$1:$A$310,0)),B1,"") D1に=IF(ISERROR(MATCH(B1,$A$1:$A$310,0)),ROW(),"") をいれB列最下行まで複写。A列データを310行と仮定。 B1:CXX(XXはB列最下行)を値のみ複写で値にする。 B1:CXXをD列で並べ替えする。 (サンプル)A1:B8。式は =IF(ISERROR(MATCH(B1,$A$1:$A$8,0)),B1,"") =IF(ISERROR(MATCH(B1,$A$1:$A$8,0)),ROW(),"") 1055 1033 1068 1053 1078 1078 1088 1099 1099 2000 2011 2002 2012 2011 2020 2013 (結果)C1:D5 1033 1 1053 2 2000 5 2002 6 2013 8 D列は消す。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

以前の質問の時に、どのような回答を頂いたのか分かりませんので、 重複していたらすみません。 頑張って書いてる内に#1さんの回答が入っていたので、 必要なければ、読み飛ばしてください。 (やばいなー 読み飛ばされそう!) でも、頑張って書いたので見れたら見てね。 一応、思いつくのを3つ挙げてみました。 何を持って簡単とするかは、gilfffoさん次第ですが、 お勧めは、VBAです。(早い!)私の回答の中ではです。 VBはよくわからないようですが、一応VBAの方法も記述しましたので、他と比べてみてください。 1.手動にて(面倒!)さらに#1さんの方が簡単そう!   (1)C1セルに     =IF(COUNTIF($A$1:$A$300,B1)=0,B1,"")     と入力しC300セルまでコピー   (2)C列全体をコピーし、C列に値のみ貼り付け   (3)「データ」→「並べ替え」で値を並べ替える 2.関数にて(必要行が増えると再計算に時間が掛かる!)   (1)C1セルに     =IF(SUM(IF((COUNTIF($A$1:$A$300,$B$1:$B$300)=0)*($B$1:$B$300),1,0))<ROW(A1),"",INDEX($B$1:$B$300,SMALL(IF(COUNTIF($A$1:$A$300,$B$1:$B$300)=0,ROW($B$1:$B$300),""),ROW(A1)),))     と入力し、[Enter]の代わりに[Ctrl]+[Shift]+[Enter]を押す   (2)必要行までコピー 3.VBAにて(若干の知識が必要!)   (1)[Alt]+[F11]でVisial Basic Editerに移動する。   (2)「挿入」→「標準モジュール」でモジュールを追加する。   (3)右上の広い場所([General]と書いてある下)に      以下のコードを貼り付ける。      '----------この下から-------- Sub test()   With Worksheets("Sheet1")     .Range("c:c").ClearContents     tbl = .Range("A1:C300").Value          cnt = 0     For i = 1 To UBound(tbl, 1)       If (tbl(i, 2) <> "") Then         flg = False         For j = 1 To UBound(tbl, 1)           If (tbl(j, 1) = tbl(i, 2)) Then             flg = True             Exit For           End If         Next j         If (flg = False) Then           cnt = cnt + 1           tbl(cnt, 3) = tbl(i, 2)         End If       End If     Next i     .Range("A1:C300").Value = tbl   End With End Sub      '----------この上まで--------   (4)[Alt]+[F11]でEXCELに戻る   (5)「ツール」→「マクロ」→「マクロ」      から[Test]を選択して実行   (「フォーム」のツールバーからボタンを選択してマクロを登録してもよい。) 分からない所やおかしい所があれば、補足してください。 長文失礼しました。

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

関連するQ&A

  • 番号が一致したら別の列の値を抽出したい

    こんばんわ。 Excelについて教えてください。 A列に数字が1~10と並んでおり、 C列には数字が穴あきで5つ(1,2,4,6,8)あったとし、 A列とC列を比較して比較し、数字が重複した場合は、 D列にある値をB列に抽出したいのですが、行番号を指定して 抽出する事なんてできますでしょうか? ↓こんな事をしたいです。 A列 B列 C列 D列 1  A  1  A 2  B  2  B 3     4  C 4  C  6  D 5     8  E 6  D 7 8  E 9 10

  • エクセルで数字の下1桁を見て並び替える

    エクセルで下記の様な数字が並んでいます。 A列の下1桁の数字は上から順に増えていて、ある数字で1に戻りまた増えています。 その数字は毎回同じではなく、6までの場合もあれば10までの場合もあります。 下記の例では上から6行、次は4行、次は7行と下1桁の数字によってグループ分け出来ますよね? それで上から6行目までのB列の値(462~530)をコピーしてSheet2のA1から横方向に並べます。 その次は7行目から10行目までのB列の値(356~487)をコピーしてSheet2のA2から横方向に並べます。 その次も同じように並べます。 B列が空欄の場合もありますが、その場合はそのままSheet2にも空欄のセルを作ります。 1グループ全部のB列が空欄でもそのままSheet2に空欄の行を作ります。 この動作をマクロで出来る式を教えて頂けないでしょうか? A列          B列 0213240101     462 0213240102    387 0213240103    556 0213240104    585 0213240105    536 0213240106    530 0213240201    356 0213240202    632 0213240203    486 0213240204    487 0213240301    586 0213240302    670 0213240303    619 0213240304 0213240305    645 0213240306    487 0213240307    651 0213240401 0213240402 0213240403 0213240501    455 0213240502    623 0213240503    411 Sheet2 A列   B列    C列   D列    E列    F列   G列 462    387    556    585    536    530 356    632    486    487 586    670    619            645    487    651    455    623    411

  • エクセル 文字列から数字だけを抽出

    エクセル2016の操作について教えて下さい。 セル内の文字列から数字だけを抽出したいです。 例えばAの列にこのような文字列が入っているとします。 高度5km 高度10.1km この中の数字だけを取り出して隣のB列の同じ行に数字だけを表示させる方法がありましたら教えて下さい。 宜しくお願いします。

  • 並びの違う数字の一致数を表示するには

    並びの違う数字の一致数を関数で表示できないか色々とやっているのですが、表示する迄結果が出ずに苦労しています。 並びが一緒なら、MATCH関数で出来るのですが、並びの違う数字の場合は、色々と調べているんですが、結果が出ない状態で苦労しています。 結果を出したいのは、以下の通りです。 A    B    C 12345 65984  3 32654 12654  4 36985 14789  2 36587 15986  3 45163 10234  4 A列全体の数字のリストに対して、B1 B2 B3 B4 B5と言った具合に、B列の1つのセルに入っている数字の並びは関係無く、同じ数字が幾つ存在しているかC列に比較した結果を出したいと思っています。 並びが順不同での比較は可能でしょうか? ご教授お願いします。 宜しくお願いします。

  • エクセルで教えて欲しいことがあります。

    A列に0,50,100,150,200・・・と順に数字が書かれて おり、B~D列にその数字に対応した情報がかかれています。 これをA列が100の倍数のものだけを行ごと抽出したい のですがどのような方法をとればよいのでしょうか? 初歩なことかもしれませんが分からず困っていますので よろしくお願いいたします。

  • エクセルで一致した数字を抽出する

    こんばんは。 excel 2007を使っていますが、 A列の1~100に数字がランダムに入っています。 B列の1~100にも数字がランダムに入っているとします。 Aの1~100の数字とBの1~100の数字の中で 一致している数字をC列に書き出される方法は ありますでしょうか? よろしくお願いいたします。

  • エクセルの質問。同じ数字なら違う列の数字を返す

    エクセルについて質問です。 A列は数字が入力されていて、B列はある数字があります。C列にB列と同じような数字を入力していきます。入力したC列の数字が、B列の中にあれば、入力した行にA列の数字をD列に返すことは出来ますか?下記に例を記載します。 A     B     C       D 0   20110210   2010811       1   20110214   20101025   2   20110215   2011111    7 3   20110216   2011322  4   20110217   2011516   6   20110221   2011325   7   2011111    20101220   8   20050223   2011128   宜しくお願いします。

  • エクセルで数字の抜き出し。

     よろしくお願いします。   A   B   C   D 1    2   - 2    4   あ  3    5   6 4    3 5        ”          ” という表があります。C列に数字が入っているときにB列の数字をD列へ抜き出します。この場合3行が条件にあたり、3Dへ数字の5が抜き出すようになります。よろしくお願いします。

  • エクセル 値が一致しないものを見つけたい

    お世話になります。 エクセルでA列B列にそれぞれ数値が入っている表があり、A列にはあってB列にはない数値を分かるようにしたいと思っています。      A列  B列   C列 1行目  1   1 2行目  1   5 3行目  4   0   4 4行目  5   1    5行目  1   0   1 ・A1、A2、A5の値が1であるように、A・B列とも重複する数値が入ることがあります。 ・A列とB列の値は1対1で対応し、例えばA1がB1と対応するならA2はB4と対応します。 この表ではA3、A5に対応する値がB列にないので、C列にその値を表示させています。 ・一致しない数字を分かるようにする方法にこだわりはなく、例のようにC列に値や×を表示させる、A列に色をつける、一致するものがあった数値は削除する等、なんでも構いません。 お分かりになる方、どうぞよろしくお願いいたします。

  • 列に並んだ数字群から一致する数字の行番号を抽出

    下記のように B列に数字が縦に並んでいます。 28.11684736 28.12102177 28.12519803 28.12937616 28.13355614 28.13773798 28.14192168 28.14610723 28.15029464 28.15448391 28.15867503 28.16286801 28.16706285 28.17125955 28.1754581 この数字群から、例えば 28.15448391 に一致する数字の行を見つけて その行番号を抽出するコードはどのように記述したらよいのでしょうか。 番号はA1のセルに置きます。 但し、条件があって Excel2000~Excel2003の全てのバージョンに共通する こと。そして列のデータ数が約10000程度はあることです。どこから 手をつけてよいのか判らないので、よろしくお願いします。 簡単な例では下記でもよさそうですが。より早く求めるには???  A= Range("B65536").End(xlUp).Row I=0 Do I=I+1 Loop until Cells(I,2).value=28.15448391  Range("A1")=I

専門家に質問してみよう