• ベストアンサー

《急》Excelで数値の抽出方法を教えてください

ExcelでA B C D という数値列があり、A(不連続)で得た結果がC,B(不連続)で得た結果がDとした場合、AおよびBがグラフでいうx軸に当たり、CおよびDがy軸に当たります。A列とB列の数字が同じときの結果(CとD)を別の列に表示するというものです。すなわち、x軸を同じにして不連続な数値y軸(C、D)のグラフを書きたいと考えています。適当な関数があればご教授いただけると幸いです。ぜひよろしくお願いいたします。 画像添付します。このように数値を抽出したいと考えています。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

>B列に対するDの数値が対応できていないみたいです.  申し訳御座いません、G1セルに入力する数式は、 =IF($E1="","",VLOOKUP($E1,$A:$D,4,FALSE)) ではなく、 =IF($E1="","",VLOOKUP($E1,$B:$D,3,FALSE)) でした。  この数式は、 E1セルが空欄の場合には、何も表示せず、 E1セルが空欄ではない場合には、 $B:$Dの範囲内で最も左にある列(即ちB列)の中で、E1セルと同じ値を持つセルを探し出し、そのセルと同じ行にある、「$B:$Dの範囲内で左から3番目にある列(即ちD列)」のセルの値を表示する、 という働きをする関数です。  因みに、E1セルに入力した、 =IF(AND(INDEX($A:$A,ROW())<>"",COUNTIF($B:$B,INDEX($A:$A,ROW()))),INDEX($A:$A,ROW()),"") という関数は、「その関数が入力されている行と同じ行にある」A列のセルが空欄では無い場合で、 且つ、「その関数が入力されている行と同じ行にある」A列のセルの値、と同じ値を持つセルがB列の中に存在している場合には、 、「その関数が入力されている行と同じ行にある」A列のセルの値を表示し、 それ以外の場合には、何も表示しない、 という働きをする関数です。  尚、 INDEX($A:$A,ROW()) の部分は、「その関数が入力されている行と同じ行にある」A列のセルの値を求める関数で、E1セルに入力する場合には、$A1と入力するのと同じ働きをしますが、$A1と入力した場合には、セルの削除や切取り、挿入等の操作で、セルの位置関係がずれると、関数が正常に作動しなくなるのに対して、INDEX($A:$A,ROW())と入力した場合には、セルの位置が上下にずれても、関係なく正常に動作致します。

ciao113
質問者

お礼

再度、ご回答ありがとうございました。 実用の結果、正しいデータ処理が行うことができました。感謝いたします。 また、何かありましたら宜しくお願いいたします。

その他の回答 (2)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

グラフを書くためなら、x軸を1つの列にまとめなくても、そのまま元のデータ列を使って書くことができるが、それではダメなのか。 グラフウィザードで「散布図」を選んで、「系列」で、 「系列」の「追加」で、1つの系列(系列1)のxの値をA列に、yの値をC列にする。 また、「系列」の「追加」で、2つめの系列(系列2)のxの値をB列に、yの値をD列にする。 これだけのことですが、x軸を項目軸にしたいのでしょうか。データを見ると散布図でいいように見えるが。

ciao113
質問者

お礼

グラフを書くためだけではなく,実際は得られた結果(C、D)よりある計算を行わなければならないため、同じx軸で比較をしなければいけないのです。 ご回答ありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 まず、E1セルに次の数式を入力して下さい。 =IF(AND(INDEX($A:$A,ROW())<>"",COUNTIF($B:$B,INDEX($A:$A,ROW()))),INDEX($A:$A,ROW()),"")  次に、F1セルに次の数式を入力して下さい。 =IF($E1="","",INDEX($C:$C,ROW()))  次に、G1セルに次の数式を入力して下さい。 =IF($E1="","",VLOOKUP($E1,$A:$D,4,FALSE))  そして、E1~G1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。  以上です。

ciao113
質問者

お礼

早速のご回答ありがとうございます. ただいま試してみましたが、A列に対するCの数値は対応してるみたいですが、 B列に対するDの数値が対応できていないみたいです. 中身を調べてみても、イマイチわかっていません。 もしよろしければ、ご回答いただけると非常に助かります。 よろしくお願いいたします。