- ベストアンサー
エクセルの関数について
- エクセルの関数を用いて、同一シート内の指定した条件のデータベースを参照し値を返す方法について説明します。
- 具体的な例として、B22セルで指定した日付とC22セルで指定した項目の個数を、指定したデータベースから取得する方法を解説します。
- これにより、B22とC22の値を変えるだけで、簡単にデータベースから指定した項目の個数を取得することができます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
例示のレイアウトなら以下の数式で2つの条件が合致する個数を求めることができます。 =OFFSET(A1,SUMPRODUCT((A1:H20=B22)*ROW(A1:H20))+MATCH(C22,B3:B5,0)-1,SUMPRODUCT((A1:H20=B22)*COLUMN(A1:H20)))
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! すでに回答は出ていますので・・・ 他の方法の一例です。 少し手間がかかりますが、表が規則性なしに並んでいても対応できると思います。 関数としてはVLOOKUP関数を使いたいので、VLOOKUP関数の範囲の部分に 全て名前定義しておきます。 当方使用のExcel2003の場合です。 表でいうと、A3~B5セルを葉に指定 → メニュー → 挿入 → 名前 → 「定義」で _1 とします(数字だけだと名前定義できないように思いますので、強いて各月の数字の前にアンダーバーを入れておきます) 同様にA8~B10 → _2 → A13~B15 → _3 ・・・_12 という具合に各月のVLOOKUP関数の範囲に指定したい部分を12月まで名前定義しておきます。 ここまでできれば後は簡単です。 ↓の画像でB22セルにシリアル値・C22セルに種類を入力するとします。 表示させるセルD22セルに =IF(COUNTBLANK(B22:C22)>0,"",VLOOKUP(C22,INDIRECT("_"&MONTH(B22)),2,0)) という数式が入っています。 尚、数式は月だけで判断するようにしていますので、 万一、表の日付が1日以外でもその月の表だとして判断すると思います。 余計なお世話かもしれませんが、質問の表は各月の1日だけの表になっていますが、 同月で違う日付の表があれば数式を少し変更する必要があると思います。 以上、長々と書きましたが 参考になれば幸いです。m(__)m
お礼
ありがとうございます。 indirect関数ってこういうふうに使えるんですね。 汎用性も高く、今後役に立ちそうです。 お礼が遅れてすみませんでした。 急に事故にあってしまって入院していました。
- mt2008
- ベストアンサー率52% (885/1701)
私も、データベースを「日付、種類、個数」と作りかえる事に賛成です。 その形になれば、データベース関数が使えます。 この例でしたら、DSUMを使います。
- yama1718
- ベストアンサー率41% (670/1618)
無理やりIFを9段囲って記述する方法もありますが、 VBAなどマクロを組まなければ簡単にはできないと思います。 普通はこの様なデータの並び自体が扱いにくいので、 3つの項目を横に並べて全てのデータを並びかえます。 「日付、種類、個数」(このデータが9日×3種類=27行縦に並ぶ) こうするとVLOOKUP関数で参照できます。 データの並び替えができないなら、他のシートにOFFSETなど使って、 上記のように元の表に連動して並び替えた表に変換して、 それをVLOOKUPで参照します。
お礼
ありがとうございます。 上記関数でできました。 お礼が遅れてすみませんでした。 急に事故にあってしまって入院していました。