エクセルの関数について

このQ&Aのポイント
  • エクセルの関数を用いて、同一シート内の指定した条件のデータベースを参照し値を返す方法について説明します。
  • 具体的な例として、B22セルで指定した日付とC22セルで指定した項目の個数を、指定したデータベースから取得する方法を解説します。
  • これにより、B22とC22の値を変えるだけで、簡単にデータベースから指定した項目の個数を取得することができます。
回答を見る
  • ベストアンサー

エクセルの関数について

エクセルの関数について いつもご回答者の皆様方にはお世話になっております。 また一つ関数で実現したいことができたのですが、 添付画像のように同一シート内に形式が同じデータベースが複数あった場合に、 指定した条件のデータベースを参照し、値を返すような関数は可能でしょうか? B22セルで2010/1/1と指定した場合に、A2-B5のデータベースを参照し、さらにC22セルで指定してある「りんご」の個数を表示させるといった内容になります。 B22とC22の値を変えるだけで、それぞれのデータベースの指定した項目の個数を割り出したいのです。 識者の方々よろしくお願いいたします。m(_ _)m

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

例示のレイアウトなら以下の数式で2つの条件が合致する個数を求めることができます。 =OFFSET(A1,SUMPRODUCT((A1:H20=B22)*ROW(A1:H20))+MATCH(C22,B3:B5,0)-1,SUMPRODUCT((A1:H20=B22)*COLUMN(A1:H20)))

rihitomo
質問者

お礼

ありがとうございます。 上記関数でできました。 お礼が遅れてすみませんでした。 急に事故にあってしまって入院していました。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! すでに回答は出ていますので・・・ 他の方法の一例です。 少し手間がかかりますが、表が規則性なしに並んでいても対応できると思います。 関数としては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

rihitomo
質問者

お礼

ありがとうございます。 indirect関数ってこういうふうに使えるんですね。 汎用性も高く、今後役に立ちそうです。 お礼が遅れてすみませんでした。 急に事故にあってしまって入院していました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

私も、データベースを「日付、種類、個数」と作りかえる事に賛成です。 その形になれば、データベース関数が使えます。 この例でしたら、DSUMを使います。

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.1

無理やりIFを9段囲って記述する方法もありますが、 VBAなどマクロを組まなければ簡単にはできないと思います。 普通はこの様なデータの並び自体が扱いにくいので、 3つの項目を横に並べて全てのデータを並びかえます。 「日付、種類、個数」(このデータが9日×3種類=27行縦に並ぶ) こうするとVLOOKUP関数で参照できます。 データの並び替えができないなら、他のシートにOFFSETなど使って、 上記のように元の表に連動して並び替えた表に変換して、 それをVLOOKUPで参照します。

関連するQ&A

  • エクセルの「countif」関数の使いかた

    countifの使い方で質問があります。 ヘルプを見て、 「=COUNTIF(B2:B5,">55")だとB2~B5で55より大きい値が入力 されているセルの個数を求めます」とあります。 「55」のように値が決まっていればいいが、決まっていなくて、 あるセルを参照するような場合はどのようにすればいいのでしょうか? 例えば、A1に55と入っていて、「A1のセルの値」より大きい セルの個数を求める場合。 また、「上記だと55より大きい」ですが、「55より大きくて60以下」 のように条件が二つある場合はどうすればいいのですか? (この場合も参照セルを使う方法で知りたいです。 よろしくお願いします。

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

    以下のようなことを実現できるエクセルの関数を教えてください。 <状況> ・ひとつのセルに、複数の数字が「,」区切りで入力されている。  (仮にA1セルとします) ・B1セルに検索値が入っています。 <実現したいこと> B1の値が、A1に含まれるとき、C1に”○”を返す。 このときのC1に入力すべき関数を教えてください。 <具体例> A1:12,13,14 B1:12 C1:○

  • [関数] 集計用の関数についてご教示ください

    こちらの識者の方々にはいつもお世話になっています。 関数の質問です。 環境は下記になります。 OS=windows7 pro 64bit Office=Excel2010(14.0.7128.5000) ・やりたいこと 図のようなリスト(A3:G7)があり、りんごやバナナなどの項目ごとに誰がいくつか集計したい(A11:C14) B12:C14の範囲に関数を入力して数字を導き出したいのですが、 その際の関数の範囲はA4:G7を指定したいのです。 (りんごの列の関数の範囲はA4:G5、ばななの列の関数の範囲はA6:G7という風に分けたくない) Aに1列追加して A4=りんご担当 A5=りんご個数 というような集計用の列を作成することは可能です。 このような場合どのような関数を使えばよいでしょうか? もし可能であれば集計用の列を追加した場合としない場合、両方の関数を教えていただければ幸甚です。 (集計用の列をどのような値にするかも併せて教えていただけますでしょうか) 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

  • エクセル関数について

    図のリスト1の中のリンゴという文字が リスト2の3つの文字の中から 同じ文字であるリンゴ(E4)を選び出し、 そのリンゴの横の数字(F4)を リスト1のリンゴの横(2C)に関数で表示させるには C2にどのような値を記入すればよろしいでしょうか? またC2に記入する値にはリンゴの文字を使う代わりにB2などマスを指定する形に できればと思っております。 リンゴの文字列をつかうとB2のリンゴの文字がみかんに変わったときにC2に記入する関数もそれに合わせてみかんと入力しなおさないといけない恐れがあるためです。 宜しくお願いいたします。

  • エクセル関数について

    下記のエクセルデータでDのセルにBの値反映させ、もし空欄(例えばD3)だったら上のセル(例えばD2)の値を反映させる事ができますか?なにか関数でいい方法があれば教えていただけないでしょうか。    A   B   C   D 1  日   数   名   数a 2  2/20  1   りんご  3  2/20      みかん 4  2/21  3   りんご  5  2/21      みかん

  • エクセルの関数

    =VLOOKUP(A1,B10:C100,2,FALSE) の関数において条件により参照するセル、セルの範囲を変更したいです。 参照するセル A1 や B10:C100 を変数に置き換えることはできますか? つまり A1を参照する場合やその他のセル(例えばA2)を参照したり B10:C100の範囲を例えばB101:C200に変更させたいです。

  • エクセルのデータベース関数について

    エクセルのデータベース関数について質問します。 データベースの指定された列を検索し、条件を満たすレコードの中で数値が入力されているセルの個数を数えたいと思います。が、その列が複数あり、また、条件も複数ある場合、DCOUNT関数を使うと、データベース関数に指定した条件が設定されているセル範囲をいくつも設定しなくてはならないのでしょうか? 以前、Lotusを使っていた時は、#and#という形で、条件をいくつも指定することが出来たのですが、そういったことは出来るのでしょうか? わかりにくい表現かもしれませんが、よろしくお願いします。

  • エクセル関数について教えてください

    エクセル関数について教えてください! ある特定のセルに入力された値が、範囲指定された中のいずれかのセルの値と一致する場合は「○」、一致しない場合は「×」を記載する方法 (例) A1のセルに「0001」という値があります B1:B10の範囲指定したうちのいずれかのセルに「0001」という値がある場合は「○」、ない場合は「×」を記入 どなたかよろしくお願いしますm(_ _)m

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

    エクセルの関数について いつもご回答者の方々にはお世話になっています。 関数でまた教えていただきたいのですが、 下記画像のようなデータ(解像度の規制上、1月の途中までのデータのみ表示しています)から、該当月の3行目の値が1になっている最初のセルの1行目(1 月であれば1/1)と、3行目の値が1になっている最後のセルの1行目(1月であれば1/6)の値を返すような関数はありますでしょうか? 条件は下記です。 ・C40-N51にそれぞれの月のデータを作成する。 ・作業用の列/行は作成できない。 ・3行目が1になっている何番目などではなく、最初と最後を指定したい。  (月によっては6が1日だけある日(31日)があり、その場合は本関数で導き出される最初と最後を○/31としたい。) 自分なりにHLOOKUPとMATCHなどを組み合わせてやってみたのですが、どうしてもうまくいかず。 識者の方々よろしくお願いいたします

  • Excelで関数の参照先をセルの値で指定するには?

    Excel2000を使用しています。 関数が参照するセルを指定する場合、例えばSUM、のとき。 セルA1には"B1"と入力されており、 同様にセルA2には"B5"が入力されていたとして(もちろん " は実際には入力されてません)、 この セルA1 と A2 のテキストデータを参照して、SUM(B1:B5) を得るにはどのように範囲を指定したらよいのでしょうか? 別にセルA1 と A2 が "B1" 及び "B5" でなくてそれに代わるものでも構いません。 要は関数が参照するセルをほかのセルの値で指定したいのですが。

専門家に質問してみよう