• 締切済み

2つの条件から1個のデータを導き出す関数が分かりません。

excelで売上集計表を作っているのですが、関数が分からなくて困っています。VLOOKUPやDSUMなどは知っているのですが、2つの条件から1個のデータ抽出する方法が分かりません。 (例)サイズ+色 → 該当する値段  など 【列】カラー 【行】サイズ → 【交わるセル】値段 という表(1)が参照元として有ります。 その参照表とは別に表(2)として、【A列】には購入者を【B列】カラー 【C列】サイズ と入力していく管理表で【D列】に同じ行の「カラー」と「サイズ」を参照して、別表(1)の価格を自動表示できるような関数を入力したいのです。このようなケースの場合どのような関数を入力すればよいのでしょうか。

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.5

表(1)が1行目がカラーの名称、A列がサイズでB2からその値段   赤 青 黄 緑 ピンク SS 100 105 110 110 120  S_ 110 115 120 125 140 M_ 120 125 135 140 160 L_ 130 135 150 155 180 LL 140 145 165 170 200 なら =VLOOKUP(C2,表(1)!$A$2:$F$6,MATCH(B2,表(1)!$B$1:$F$1,0),FALSE) または =HLOOKUP(B2,表(1)!$B$1:$F$6,MATCH(C2,表(1)!$A$1:$A$6,0),FALSE) または =INDEX(表(1)!$B$2:$F$6,MATCH(C2,表(1)!$A$1:$A$6,0),MATCH(B2,表(1)!$B$1:$F$1,0))

hunico
質問者

お礼

表の例示までつけて頂いて、大変分かりやすかったです。 必ずしも1つしか方法がないとは限らないのですね。すべて試してみます。

  • kikei
  • ベストアンサー率5% (1/20)
回答No.4

sumproduct関数を用いても計算できます。 例えば サイズ=120、色=青 の値段を抜き出したい場合 表1にA列:カラー B列:サイズ C列:値段 としていた場合 =sumproduct((A1:A1000="青")*(B1:B1000=120)*(C1:C1000)) とすれば値段が抜き出せます。 (但し、この表1に同カラー同サイズの行が2行以上あった場合 その2行の値段を足し合わせてしまいますので注意が必要です。)

hunico
質問者

お礼

ありがとうございます。その関数は初めて聞きました。しかし、kikei様のご指摘通り、今回は同条件のデータが複数存在するため、教えていただいた関数ではうまく処理できなそうです。 けれどとても参考になりました!別のケースで活用してみたいです。

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

列・行番号から検索できるINDEX、OFFSET関数になると思います。この関数の大きな違いは相対番号がINDEX関数は1、OFFSET関数は0ぐらいでしょうか。 又、行・列番号はMATCH関数で確定しますのでこの二つの関数を組み合わせる事になります。 INDEX関数は回答済みですのでOFFSET関数例です。 =OFFSET(表1!$A$1,MATCH(C2,表1!$A$1:$A$10,0)-1,MATCH(B2,表1!$A$1:$F$1,0)-1)

  • Yosha
  • ベストアンサー率59% (172/287)
回答No.2

>VLOOKUPやDSUMなどは知っている VLOOKUP(/HLOOKUP)では、検査値(ここでは、サイズ、色など)は、昇順に並べられていることが必須条件ですので、この関数を使っても出せますが、データを並べ替える必要がでてきます。 DSUMでは出せませんが、DGETという関数もありますが、ストレートには答えが出せません。 この場合は、行と列との交差しているセルの値を取り出せる、INDEX関数の配列形式用の関数を使います。書式は、INDEX 書式2の  INDEX(配列 [,行番号][,列番号])=配列要素の値 を使います。あなたの場合、配列はデータの範囲全体を絶対指定にします。行番号、列番号は書式では、単独又は双方とも省略できますが、必ず両方指定します。 行番号(【B列】カラー)、列番号(【C列】サイズ)の取得は、MATCH関数を使います。書式は、  MATCH(検査値, 検査範囲 [,照合の型])=相対的な位置 です。 検査値は、行番号(【B列】カラー)/列番号(【C列】サイズ) 検査範囲は、参照表の【列】カラー/【行】サイズ の各タイトルが格納されている範囲 照合の型は、必ず「0」を指定します。これは、検査値と一致した値のみを検索します。検索範囲のデータの並びはランダムでOKです。省略するとデータは昇順でないといけません。 具体的には、参照表の【行】サイズ欄のタイトルが“A2”~“A20”、【B列】カラー欄のタイトルが“B2”~“G2”に記載されていて、管理表のデータが“A50”から始まっているとすると、“D50”セルに、次式  =INDEX($B$2:$G$20,MATCH(C50,$A$2:$A$20,0),MATCH(B50,$B$2:$G$2,0)) を入力し、下方にドラッグすればOKとなります。 不明な点があるときは、エクセルのヘルプを見てください。

hunico
質問者

お礼

>DGETという関数もあります  初めて知りました。 >不明な点があるときは、エクセルのヘルプを見てください   その通りですね。改めてヘルプを見ると思いの他、詳しい解説が出てきて、もっと活用すべきと思いました。 どうやらINDEX関数を中心に用いた使い方が一番よさそうです。ありがとうございました。もっとexcelの勉強に励む必要を感じました。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

MATCH関数とINDEX関数の組み合わせが有効だと思います。 MATCH関数を使い、列数と行数を割り出し、それを元にINDEX関数 で値を取り出します。 以上です。

関連するQ&A

  • Excel 関数を使う? 抽出データ

     以下について教えてください。 ============================== 【基になる表--「A」の表と呼ぶことにします。】  列方向のリストには左から「月」「日」「地域」「数」が並んでいる。  「月」には1月から12月までのデータが、 「日」には1日から30もしくは31日のデータが、 「地域」には北海道、青森、新潟、東京、大阪の5つの地域が、 「数」には売上数が並んでいるとする。 【基になる表から抽出して作られた表--これから便宜上「B」の表と呼ぶことにします。】  列には「地域」の中から北海道と青森を、 行には「月」から9月を、「日」から15日を、 列と行が交差するセルには「数」を置き、「9月15日の北海道と青森の売上数」の合計を抽出したい。  さらに、Bの表において、 「地域名」の北海道を削除して新潟にしたり、9月15日ではなく9月18日に置き換えても、 列と行が交差するセルに自動的に集計結果が表されるようにしたいのです。  ちなみに、Aの表もBの表も同じブックに作り、シートは別にします。 ===================================  DSumやIfSum関数だと私が作りたいBの表のような形式になりません。列方向にしかラベルを置けません。  ピボットテーブルを使った集計ならば、求めているデータ以外のデータも表示されてしまいます。  どうすれば求めていることができるでしょうか?どうか皆さんの知恵をお貸しください。

  • EXCEL関数 一覧から週計データを導き出したい

    Sheet1に1売上商品1行のデータが年間通しで並んでいます。 Sheet2に1日1行の週計データを表示したのですが。 Sheet2の [B2]以下の列に入れる関数 Sheet2の [C2]以下の列に入れる関数 Sheet2の [D2]以下の列に入れる関数 Sheet2の [E2]以下の列に入れる関数 を教えてください。 ================ Sheet1 売上入力表 Sheet2 日別売上集計表 画像添付しています

  • EXCELのDSUM関数で集計条件に日付を入れると数字が消える

        B列      C列     D列   E列      F列      G列 1行  日付      区分    金額   集計する条件 2   2000/1/1   A社   1000    区分     日付      日付 3   2000/1/10    B社    500   A社    >=2000/1/1  <2000/2/1 4   2000/1/15    A社    300    5   2000/2/5   A社     200    集計結果 6                        =DSUM(B1:D5,3,E2:G3) 上記のような表をEXCELで作成しました そのうちA社の1/1~1/31の金額をDSUM関数を利用して集計したく 上記のようにDSUM関数に引数を入力しました しかし集計条件が区分のみ(E2:E3)だとA社の2/5までの合計額1500が反映するのですが、日付を入れた途端に0になってしまうのです ちなみに、一例として日付→商品区分に直して日付の代わりに 「機械」「部品」といった文字を入力してみると ちゃんと条件通りの集計をしてくれます 日付の入力のしかたに間違いがあるのでしょうか? テキスト見ながらちゃんとやってると思いこんでるだけで 落とし穴にはまってるのだと思います 是非良きアドバイスをお願いします  

  • 関数

    在宅ワーク研修中で、エクセルで表を作成するのですが、C列(上期売上数値)を利用して人数を表示する関数は、COUNT関数と勉強し範囲を入力したのですが、そのまま(C3:C12)と、表示したいセル(C14)に表示されてしまいます。使用する関数が違うのでしょうか?また、もう一つの表に、地域の列に店舗のセルを参照して店舗マスター表から地域を参照して表示する関数はVLOOKUP関数と勉強したのですが入力の仕方が解りません、、。参考になるサイトはありませんか? 商品名、単価、原価の列にも商品IDを参照して商品マスター表からそれぞれの商品名、単価、原価を参照して表示する関数もVLOOKUP関数ですか?入力の仕方が参考になるサイトがあれば教えて下さい。m(_ _)m

  • 複数条件の集計について、教えてください。

    EXCEL初心者のため、どうか教えてください。     品名   サイズ  数量 ジャケットA  S   2 ジャケットA  M   3 ジャケットB  S   5 ジャケットB  L   5 このような表のとき、例えば「ジャケットAのSサイズは2つ」というように条件が複数ある場合の集計方法はないのでしょうか?? 集計結果を別表に作成したいのですが、DSUM関数を使おうとすると、上手くいきません。どうか、教えてください。

  • 何かいい関数を教えてください(EXCEL)

    よろしくお願いいたします。 以前に誰かが作ったものを修正しながら栄養価計算の表を作っています。 そこでご質問なのですが、一日ごと使用した調味料を集計しているワークシートがあり、その値だけを他のファイルに抽出したいのですが、(一ヶ月毎の集計で最大23日分です) その日によって使用している調味料が違い、一日ごとに集計しているワークシートはDSUM関数で集計したものをVLOOKUP関数で飛ばしてきているようです。MATCH関数やVLOOKUP関数で試して見たんですが、調味料のワークシートがソートされていないせいか(ソートもできない状態)VLOOKUP関数もうまく返してくれません。最終的にはひと月ごとで使用した調味料の量を計算させたいのです。 おおもとのファイルはこの調味料の計算の他栄養価計算や発注表など 一日ごとの管理をしているので一ヶ月ごとフォルダをつくりその中に 最大の23日分のファイルを管理させ、そこから調味料の計算だけのファイルを作ろうと思っています。 何かいい関数はないでしょうか?よろしくお願いいたします。

  • Excelの関数について

    エクセルで表を作っているのですが、関数についてひとつ質問です。 VLOOKUPなどの検索関数で、検索値として参照する値にひとつのセルの中の一定の文字列を指定したい場合はどうすればよいのでしょうか? MID関数で抽出しようとしたのですが、どうも関数で抽出した値はエラーが出るようで・・・。どなたかわかる方いらっしゃったら回答お願いします。

  • Excel フィルタした値をセルに表示する関数

    図のような表をつくり、表にはテーブル書式を設定しています。 B列で社名でフィルターをかけると、C列、D列の数値の集計は、SUBTOTAL関数(109)で行っており、フィルターをかけた最終行にその集計数値が表示されます(下部画像のようになる)。 ついでに、B列の最終行に、フィルターをかけた値(ここでは文字列の"あいう会社")を表示させたいのですが、どの関数を使えばよいのかわかりません。 フィルターに使った文字列を抽出する関数、 あるいはフィルタした値は常にB列の上から2行目にくるので、 これを参照してB列の最終行のセルに表示させる方法 はあるでしょうか?

  • 日付を条件としたsumif関数について

    お世話になります。 A列に2010/4/1から4/2・・・・・12/31の日付 B列には売上個数が入っています。 月別の売上個数を集計するために別表で D列に2010/4/1,2010/5/1・・・・2010/12/1を入力し E列で =sumif(A:A,"=month(D1)",B:B) としたのですが上手くいきません・・・ そこで、 1. この方法にはこだわらないので、良い方法を教えて下さい。 2. この方法のどこが悪いかを教えて下さい よろしくお願いします。

  • 二つの条件にあった関数

    たとえばAさんBさんCさんの月の売り上げの集計表があり別の表にAさんの4月の売り上げを引っぱってきたいというときどのような関数を使えばいいのでしょうか? IF関数を使えば何とかなると思ってんですがエラーが出てしまいました

専門家に質問してみよう