• 締切済み

抽出方法が分かりません

Excelで     A       B       C 1 A社【コード5505】 2 商品コード    数量     売上高 3 aaaa       100      10000 4 bbbb       150      10000 5 6 B社【コード5509】 7 商品コード    数量     売上高 8 bbbb       80      800 9 10 C社【コード1304】 11 商品コード    数量     売上高 12 fffff       20     10000 という表があり、B社【得意先コード5509】の販売した「bbbb」の数量「80」を抽出したいと思います。 普通にVLOOKUPを使用するとA社も「bbbb」を販売しているため、この場合、関数は何を使用すればいいでしょうか?

みんなの回答

noname#52504
noname#52504
回答No.4

>その形式を毎日正すのが非常に難しい 確かにありますねぇ…そういうこと。 VBA等を用いて「自動的に形式を毎日正すようにする」のが 本来のアプローチかとも思いますが、当座の解決として、 「そのままの状態で関数を使う」方法を。 以下、仮に、E1セルに会社コードが、F1セルに商品コードが、 それぞれ元データと同じ表記で入力されているとします。 ●E1セルで指定した会社の、F1セルで指定した商品を、A1:A999の範囲から探して、B列の数量を返す。  =VLOOKUP(F1,OFFSET($A$1:$C$1,MATCH(E1,$A$1:$A$999,0),,MIN(INDEX(MOD(($A$1:$A$999="")*ROW($A$1:$A$999)-MATCH(E1,$A$1:$A$999,0),2^16),))),2,0) ・第1行~第999行の範囲で、   A列の値が会社コード(E1)と一致する行を探す(開始行) ・開始行~第999行の範囲で、   A列の値が空白である最初の行を探す(終了行) ・開始行~終了行までの範囲で、   A列の値が商品コード(F1)と一致する行を探して2列目の値を返す。 ※数式中に会社コードの参照(E1)が2回登場するので注意。 ※$A$1:$A$999の部分は、元データの行数よりも大きく設定する必要があります。  (会社コード以降の「次の空白セル」を探すので) Excel2003で動作確認済。 以上ご参考まで。

komachank
質問者

お礼

お礼が遅くなりました。 ありがとうございました。参考にさせていただきます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

次の様な表(A1:D5)となる事を想定していますが如何でしょうか。(列ずれはご勘弁下さい) 会社コード 商品コード 数量 売上高 5505 aaaa 100 10000 5505 bbbb 150 10000 5509 bbbb 80 800 1304 fffff 20 10000

komachank
質問者

お礼

なるほど! ありがとうございました。 参考にさせていただきたいと思います。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

エクセル表として、今後の拡張性が芳しくないと思いますので、データ再配置を検討した方が良いと思いますが如何でしょうか。 例えば、A列:会社コード、B列:商品コード、C列:数量、D列:売上高にすれば、データが一元化できフィルタ等の利用も可能となる 一例ですが、B社【得意先コード5509】の販売した「bbbb」の数量「80」は、次の様な数式で可能となります =INDEX(C:C,SUMPRODUCT(($A$2:$A$100=5509)*($B$2:$B$100="bbbb")*ROW($A$2:$A$100)))

komachank
質問者

補足

ありがとうございました! 実際に教えていただいた関数で参照させてみたのですが、80が抽出されません・・・。どこか問題があるのでしょうか。 お忙しいところすみませんが、よろしくお願いします。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

表の形状がマズイのかと。  B  C   D  E  F 1 A社 5505 aaaa 100 10000 2 A社 5505 bbbb 150 10000 3 B社 5509 bbbb 080 00800 4 C社 1304 fffff 020 10000 A列に、=C1&D1 とかの式(5505aaaa)を入れとけば、検索できるかと。

komachank
質問者

お礼

ありがとうございます。 仰るとおりだと思います。 実はこちらの形式がシステムから排出されるCSVのテンプレートになり、取引先数も10や20ではないので、その形式を毎日正すのが非常に難しく、関数で解決しようとしております。 何はともあれご回答ありがとうございました。

関連するQ&A