• ベストアンサー

Excelでの照合

こんにちは。Excelで例えば、 A列     B列 8500    10000 1050    9300 5700    8500 10000    5700 9300    8500 上記のような場合、A、B両列にある数値を削除し、残りの数値のみ表示することは可能でしょうか? この場合、A列では1050が1行、B列では8500が1行だけ残るような感じです。 ちなみに、同じ行に同じ数値が入っている訳ではありません。 宜しくお願いいたします。

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

  • ベストアンサー
回答No.1

WORK作業列を作ってよいと言うのなら、 A列の照合結果をC列に、B列の照合結果をD列に作る場合は、下記のような関数で可能となるかと思います。 セルC1=IF(A1="","",IF(COUNTIF($B:$B,A1)=0,A1,IF(COUNTIF($A:$A,A1)=COUNTIF($B:$B,A1),"",IF((COUNTIF($A:$A,A1)-COUNTIF($B:$B,A1))<=0,"",IF((COUNTIF($A:$A,A1)-COUNTIF($B:$B,A1))>0,A1,""))))) セルC2=IF(A2="","",IF(COUNTIF($B:$B,A2)=0,A2,IF(COUNTIF($A:$A,A2)=COUNTIF($B:$B,A2),"",IF((COUNTIF($A:$A,A2)-COUNTIF($B:$B,A2))<=0,"",IF((COUNTIF($A:$A,A2)-COUNTIF($A$1:$A1,A2)-COUNTIF($B:$B,A2))>0,A2,""))))) セルD1=IF(B1="","",IF(COUNTIF($A:$A,B1)=0,B1,IF(COUNTIF($B:$B,B1)=COUNTIF($A:$A,A1),"",IF((COUNTIF($B:$B,B1)-COUNTIF($A:$A,B1))<=0,"",IF((COUNTIF($B:$B,B1)-COUNTIF($A:$A,B1))>0,B1,""))))) セルD2=IF(B2="","",IF(COUNTIF($A:$A,B2)=0,B2,IF(COUNTIF($B:$B,B2)=COUNTIF($A:$A,A2),"",IF((COUNTIF($B:$B,B2)-COUNTIF($A:$A,B2))<=0,"",IF((COUNTIF($B:$B,B2)-COUNTIF($B$1:$B1,B2)-COUNTIF($A:$A,B2))>0,B2,""))))) ちょっと、長くなりますが、皆が良く知っている関数を使うとこんな感じでできるとおもいます。 また、セルC3以降のC列はC2をコピーして張り付ければOKです。(D列も同様です) ちなみに、結果はこんな感じになります。 8500    10000 1050    9300     1050 5700    8500             8500 10000    5700 9300    8500 回答になってると良いのですが・・・・違ってたら、コメント残してくださいなm(_ _)m

oyaoya2006
質問者

お礼

有り難うございました!

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

その他の回答 (4)

  • taspon
  • ベストアンサー率69% (9/13)
回答No.5

#4です。 すみません。結果の表示が崩れてしまいました。 ただしくは以下のようになります C列  D列   E列  F列 8500:1 10000:1 1050:1 9300:1  1050 5700:1 8500:1 10000:1 5700:1 9300:1 8500:2      8500

oyaoya2006
質問者

お礼

有り難うございました!

全文を見る
すると、全ての回答が全文表示されます。
  • taspon
  • ベストアンサー率69% (9/13)
回答No.4

「消しこみ」ということですね。 C1 =A1&":"&COUNTIF(A$1:A1,A1) D1 =B1&":"&COUNTIF(B$1:B1,B1) E1 =IF(ISNA(MATCH(C1,D:D,0)),A1,"") F1 =IF(ISNA(MATCH(D1,C:C,0)),B1,"") C列  D列   E列  F列 8500:1 10000:1 1050:1 9300:1 1050 5700:1 8500:1 10000:1 5700:1 9300:1 8500:2 8500 違っていたらすみません。 確認してみて下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

'元の値が必要な場合は、コピーしておくこと Public Sub sample() Dim ListA As Range Dim ListB As Range Dim a As Long Dim b As Long Set ListA = Range("A1:A5") Set ListB = Range("B1:B5") For a = ListA.Rows.Count To 1 Step -1 b = match(Cells(a, 1).Value, ListB) If b Then Cells(a, 1).Delete (xlShiftUp) Cells(b, 2).Delete (xlShiftUp) 'ListB は、削除の度に範囲が減る End If Next End Sub Private Function match(s, r As Range) As Long Dim x As Range Dim i As Long i = 0 For Each x In r i = i + 1 If x.Value = s Then match = i: Exit Function Next match = 0 End Function

oyaoya2006
質問者

お礼

有り難うございました!

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

Fig-1    A   B  C   D   E  F 1 data  cnt tbd data  cnt tbd 2  8500  1  x  10000  1  x 3  1050  1  x  9300  1  x 4  5700  1  x  8500  1  x 5 10000  1  x  5700  1  x 6  9300  1  x  8500  2  x B2: =COUNTIF(A$2:A2,A2) E2: =COUNTIF(D$2:D2,D2) C、Eの各セルとセル C9 に文字列 x を入力しておく 1.[フィルタオプションの設定]を実行 2.[リスト範囲] $A$1:$B$6   [検索条件範囲] $D$1:$E$6   [抽出先]の“選択範囲内”に目玉入れ 3.[OK]をクリックした結果を Fig-2 に示す。 Fig-2    A   B  C   D   E  F 1 data  cnt tbd data  cnt tbd 2  8500  1  x  10000  1  x 4  5700  1  x  8500  1  x 5 10000  1  x  5700  1  x 6  9300  1  x  8500  2  x 4.C列の可視セルを d で上書き 5.[データ]→[フィルタ]→[すべて表示]を実行 6.ステップ1、2に同じ。ただし、次のように読み替え   [リスト範囲] $D$1:$E$6   [検索条件範囲] $A$1:$B$6 7.[OK]をクリックした結果を Fig-3 に示す。 Fig-3    A   B  C   D   E  F 1 data  cnt tbd data  cnt tbd 2  8500  1  d  10000  1  x 3  1050  1  x  9300  1  x 4  5700  1  d  8500  1  x 5 10000  1  d  5700  1  x 8.F列の可視セルに d を入力 5.[データ]→[フィルタ]→[すべて表示]を実行を Fig-4 に示す。 Fig-4    A   B  C   D   E  F 1 data  cnt tbd data  cnt tbd 2  8500  1  d  10000  1  d 3  1050  1  x  9300  1  d 4  5700  1  d  8500  1  d 5 10000  1  d  5700  1  d 6  9300  1  d  8500  2  x 6.セル A8、D8 に文字列 data を入力   セル C8 に文字列 tbd を入力   セル C9 に文字列 x を入力 7.[フィルタオプションの設定]を実行 8.[リスト範囲] $A$1:$C$6   [検索条件範囲] $C$8:$C$9   [抽出先]の“指定した範囲”に目玉入れ   [抽出範囲] $A$8   とそれぞれ設定した後で[OK]をクリック 9.ステップ8に同じ。ただし、次のように読み替え   [リスト範囲] $D$1:$F$6   [抽出範囲] $D$8 以上のステップを試してみて、疑義があればその旨を書き込んでください。

oyaoya2006
質問者

お礼

有り難うございました!

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

関連するQ&A

  • エクセルで2列の順序が違うデータの照合方法

    エクセル初心者なので教えてください。 A列、B列ともに500行ほどの数値があります。 A、B列の数値の順序は違います。 A列の数値に対し、B列の数値で一致しないものだけを 別の列(たとえばC列)に一度に自動に表示するようにするには どうしたら良いのでしょうか?  簡単な方法があれば、教えてください。

  • エクセルで0値を計算の対象にしない方法

    エクセル表で以下の状態の時の計算式が分かりません。 A1~A18までそれぞれ数値が入っています。(小数点以下1桁) B列にそのA1~A18までの順位が表示されるような計算式を入れました。(順位は数値が小さい順です) =IF(A1="","",RANK(A5,A:A,1)) これで順位が表示されるようにはなりました。 ここからが今回困ってる点です。 このシートでは毎回違う数値がA列に入ります。 その都度A列の何行目まで数値が入るかは決まっていません。 最多の場合でA18まで、最小の場合でA8までです。 しかし18より少ない場合には0値が入るようになっています。 (0値は表示させていません) 上記の計算式では例えばA13まで数値が入った場合、 B列に表示される順位はA列に何らかの数値が入った業は順位が表示されますが、 0値の入った行の順位は1と表示されてしまいます。 つまりこの場合1位が5個(14行目~18行目)もあり、その次の順位が6から始まってしまいます。 私の望んでいることは、A列に0値が入ってるセルはB列に表示する順位の対象にしないことです。 エクセル初心者でも理解できるような回答をよろしくお願いいたします。

  • エクセルの使用方法

    エクセルの使用方法で質問があります。 1.あるA列10行に数式が入力されています。その数式はA列9行+B列10行の値です。B列10行に数値を入力する時、C列10行には日付を入力しています。このままだと、B列、C列に何も入力されていない行でも、A列だけは、延々と数値が表示されてしいます。できれば、B or C列に入力していない時は、A列の表示を空白にすることはできないでしょうか? 2.上記のようにA列には、数値が入っており、何行目まで数値があるのかは、B列、C列次第です。この状態で、A列の一番下の行のセルの数値を、固定したセルに表示させる方法はないでしょうか? ただこのシートは複数個作成し、あるシートでは、10行目が一番下だったり、あるシートでは25行目が一番下だったりする条件になります。 またB列にはマイナスの数値も入るので必ずしも行が増える程、A列の値が大きいわけではありません。 3.C列の日付ですが、たとえば「2009/8/8」と入力したら、「2008.8.8」と半角で表示するようにしてるのですが、これを「2008.08.08」と半角で表示する方法はないでしょうか? 4.エクセルで時々、あるセルの左上端が緑色になり<!>と表示されています。この<!>を押すと、いろいろコメントがでてくるのですが、エラーを無視するを選ぶと、消えます。一体これは何なんでしょうか? 出ないようにする方法はないでしょうか? 以上の件、どれでもよいのでご回答くださいますようお願います。

  • エクセル関数について

    エクセル関数について質問です。 簡単に説明すると特定のセルに特定の数値を入力するとその行の別のセルの数値を別のセルに表示させたい。 たとえば     A      B       C 1  100            2  200      1      100 3  300      1      300 4  400 5  合計            400 上記の様になっていた場合 A列は定数で固定です。B列のセルに1と入力(1でなくてもよい)した行のA列の数値を Cに表示したいのですが、 C列にどの様な関数を使ったらいいんでしょうか?宜しくお願い致します。

  • エクセルのif関数について

    現在データ処理のためにエクセルを使っていますが、ある条件処理をうまくできなくて困っています。どうかお知恵をお貸しください。 <内容>  A列    B列 1行  0.38% -1.74% 2行  3.16% 1.75% 3行 -0.34% 1.91% 4行 0.17%   -3.55% 5行 -0.13% 2.65% 逆相関について調べているのですが、A列1行に対応する数値B列1行は逆相関ですからC列1行に「○」を表示し、2行は相関ですからC列2行に「×」を表示したいのです。 C列6行には「○」の個数である「4」の表示もできたらしたいです。 さらに「○」ならば絶対値を足していき、「×」ならば絶対値を引いていく、つまり上記の場合は|1.74|-|1.75|+|1.91|+|3.55|+|2.65|=8.10と表示したいのですがさっぱり見当がつきません。 例えばD列に「○」ならば絶対値プラス、「×」ならば絶対値マイナスというような表示の仕方もあるのでしょうか?それができるのならばあとはオートサムでやれば簡単に8.10の合計値はでるのですが。。 ちなみにややこしくなるのであれば単に1.74や-0.13のような数値表示もよく、パーセント表示でなくともかまいません。 どうかよろしくお願いいたします。  

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

    お世話になります。 エクセルで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列に色をつける、一致するものがあった数値は削除する等、なんでも構いません。 お分かりになる方、どうぞよろしくお願いいたします。

  • エクセル初心者です 助けてください

    エクセル初心者です。 エクセルで以下のような集計をしたいのですが、わかる方、教えていただけませんか? 列1のAが入力されたもののみ列4の数値を足す式を教えてください (この場合であれば列1の行1.4.5がAですので列4の数値は3+3+3=9となる式)    列1 列2 列3 列4 列5   行1 A  2  1  3  5   行2 B  3  2  5  5    行3 C  2  1  4  5    行4 A  2  1  3  4    行5 A  2  1  3  5    ・ ・ 頂き物のパソコンでエクセルのマニュアルもないので、よろしくお願いします。

  • エクセルで集計

    エクセルでの合計について教えていただきたいのです。 A1~A10000まで日付が、B1~B10000まで数値が入力されています。 B列の数値を50行ごとに合計し、C列に表示する方法。 現在は、sum関数で手作業です。 簡単に表示できる方法を教えてください。 また、C列に合計のある行をD列(D1・D2・D3・・・)、E列(E1・E2・E3・・・)、F列(F1・F2・F3・・・)に並べたいのです。(50行ごとに間引いて表示するような感じです) 現在は、=C50・=C100・=C150のように手作業です。 もっと多量のデータが入力されたシートもあります。また、100行ごと150行ごとなど合計行が違う場合もあります。 エクセル初心者です。 よろしくお願いいたします。

  • エクセルで数値の大小を判別する方法について

    とても簡単のように思えたのですが、いざやってみると、あれ?、う~ん!、なかなかうまくできません。どなたかご教授ください。たとえば、次のような場合、    A列  B列  C列 1行  1       小 2行      3 3行 4行  8 5行      5   小 上記の表の意味は、A列・B列のそれぞれ数値の隣接した1行目と2行目、4行目と5行目の数値を比較して、小さい方の数値に"小"をC列に表示させたい(この時、"小"は小さい方の値の行に表示するものとする)。この場合、C列にはどのような関数を設定すればよいのでしょうか?

  • エクセル 列の数値の合計の表示について、

    エクセル 列の数値の合計の表示について、 ごく基本的なことだと思いますが、教えてください。 例えばA列に上から順に数値を入れていき、その合計をB列に表示させるとします。 私のやり方はB列の計算式を=B1+A2としてこのコピーを、数値の数だけ下に下げることで目的を達しました。 すでにA列に数値が何個も入力している場合はこれで良いのですが・・。 ここから質問なのですが、例えばA列に現在10個数値がありB列に順番にその合計が出ているとします。 次にA列11行目に新規に数値を入力した時に、自動的にその合計がB列に出るようにしたいのです。 予めB列の数式のコピーを11行目以降に延ばしておくと、10行目の合計の数値が延ばした行まで並ぶので困っています。 よろしくお願いします。

専門家に質問してみよう