• ベストアンサー

エクセルにおいて複数の条件から抽出することができる関数(式)を教えてください。

皆さんどうか教えてください エクセルにおいて複数の条件から抽出することができる関数(式)を教えてください。 400  70円  ad   6個 700  60円  da 7個   100  30円 ad   9個 400  50円  ad   10個 などの表で、400で70円でadなものの数を求める 条件で数値を求めるにはどうすればいいのでしょうか また条件にあったデータに6個などの数値をかけて合計した数値を求めるにはどうすればいいのでしょうか 関数でできる方法をお願いします。 あと”なおかつ”などの条件を行う関数も教えてください どうかヨロシクお願いします。

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

  • ベストアンサー
  • sero
  • ベストアンサー率47% (916/1944)
回答No.5

#4さんの回答で解決しませんか? 1行に複数のデータが入力されており、全ての列を満たす行数をカウントしたいということですか? カウント対象が1万行あるとすると =SUM((A1:A10000=A列の条件)*(B1:B10000=B列の条件)*(C1:C10000=C列の条件)*(D1:D10000=D列の条件)・・・) と必要なだけ入力し、ctrlキーとshiftキーを押しながら enterキーで式を確定して下さい。そうすると式が {=SUM((A1:A10000=A列の条件)*(B1:B10000=B列の条件)*(C1:C10000=C列の条件)*(D1:D10000=D列の条件)・・・)} という風な括弧で括られます。(配列数式になる) 列の条件は、数値ならそのまま、文字列なら""で囲います。 セルを指定しても構いません。 (1行目と同じ場合のみカウントという事であれば=A$1等となる) もし、例の場合でいう400でadの場合の金額*個数を求めたいなら (例では70円*6個+50円*10個で920円) =SUM((A1:A10000=400)*(C1:C10000="ad")*(B1:B10000)*(D1:D10000)) をctrlキーとshiftキーを押しながらenterキーです。 後は応用です。

yoshi51
質問者

お礼

返事が遅くなりました 本当にアドバイスありがとうございました アドバイスのおかげで 無事に問題が解決することができました。 心から感謝いたします。 本当にありがとうございました。

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

このタイプの問題は何度も質問に出ます。2、3日以内にも2件ありました。2条件までですが。1条件から2条件ではどうか、3条件ではとなるのは自然ですが。 考えておられる(1セルに入れるだけの直接の)関数式では出来ません。なんでも関数式で出来ると思うのは間違いです。エクセルを使っていて、人間が考えつくしたいことの極く一部しか出来ません。期待が大きすぎます。 特に抽出は苦手で難しいです。原理的にそうなるのです。 それらはVBAで処理する領分でしょう。 本件に関しては、DSUM、DCOUNT、オートフィルタ、ピボットテーブル、配列数式などを勉強してください。エクセルではDSUM辺りがこの質問の解決策と しているような(個人的に)気がします。 配列数式は、1セルに入れるだけの直接の関数式で出来るようにみえますが、異質なように思います。 (1)操作・ウイザード(2)関数(3)VBA・アドインのうちエクセルは(1)が利用の基本ではないかと思います。あまりに関数に拘るお考えが気になって。

yoshi51
質問者

お礼

返事が遅くなりました 本当にアドバイスありがとうございました アドバイスのおかげで 無事に問題が解決することができました。 心から感謝いたします。 本当にありがとうございました。

  • lucy-7
  • ベストアンサー率25% (2/8)
回答No.6

長くなります。 ご質問の内容を考えてみましたが…例えば「400」「700」などが型番、「70円」などが単価、「ad」などが商品名、「6個」などが販売個数、といった、販売管理表のようなもの(理解する為の例です、あくまで)と思えばよいのでしょうか? その上で、「型番が400&単価70円&品名adのものの総販売個数と合計売上額を求めたい」という事でしょうか。 であるならば、No.4さんやNo.5さんのやり方で求められる筈です。(実際にExcelで、yoshi51さんが例とした表を入力して試しました。) 1.A1セルから下に「400」「70」…と入力していき、同様にB1セル~下に「70」「60」…、C1~「ad」「da」…、D1~「6」「7」…で、A1~D4の範囲の表を作成。 2.(仮に見やすいように1行空けて)D6セルに次の数式を入力。 =SUM((A1:A4=400)*(B1:B4=70)*(C1:C4="ad")*(D1:D4)) ここで「普通に確定をする(Enterキーを押す)代わりに」Ctrl+Shift+Enterを同時に押します。 3.すると数式が{=SUM((A1:A4=400)*(B1:B4=70)*(C1:C4="ad")*(D1:D4))}に変わり、3つの条件を満たすものの販売個数が求められます。 (この場合6個) 4.この合計売上額を求めたい場合は、例えばE6セルに =70*D6 の式を入れればOKです。 (70円×6個=420円) そうではなく、単価は違っても「400」で「ad」なもの全ての合計売上を求めたいならば、No.5さんが書いてらっしゃるような式になります。 注意したい事は、他の方もご指摘のように「6個」などと入力されている場合はExcelに”文字列”として扱われてしまうので、計算できません。 「個」の表示が必要であれば、セルには「6」で入力して、[セルの書式設定]-[表示形式]タブの[分類]から「ユーザー定義」を選んで、[種類]の欄で”G/標準”の後に”個”を入力して設定できます。 (サンプル欄に6個と表示されていればOKです。) 尚、補足にある「aでありbでありなおかつcでありdでもありeでもある」の意味ですが、これは例えば、 ・型番400で単価70円で品名adであるのと同時に、担当者が山田である(というように条件が3つより多くある) という事がおっしゃりたいのでしょうか? であれば、先の数式の(C1:C4="ad")と*(D1:D4)の間に *(D1:D4="山田") が入って、最後の(D1:D4)が(E1:E4)に変わる(個数のセル範囲を指定する)だけです。 …というやり方で私は正しい結果を得られたのですが。

yoshi51
質問者

お礼

返事が遅くなりました 本当にアドバイスありがとうございました アドバイスのおかげで 無事に問題が解決することができました。 心から感謝いたします。 本当にありがとうございました。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

>400で70円でadなものの数を求める 条件を満たすものの個数の合計方法は、 =SUM((A1:A10=400)*(B1:B10=70)*(C1:C10="ad")*(D1:D10)) を配列数式として入力します。 (データがA1:D10に入っていて、"個"とか"円"は付いていない数値データと仮定しました) >6個などの数値をかけて合計した数値 6個を何に掛けるのでしょうか?

yoshi51
質問者

お礼

返事が遅くなりました 本当にアドバイスありがとうございました アドバイスのおかげで 無事に問題が解決することができました。 心から感謝いたします。 本当にありがとうございました。

yoshi51
質問者

補足

あの いわゆる aでありbでありなおかつcであり dでもありeでもある もののカウントを とりたいんですよ それではでてこなかったです。 6個とは上に書いてある6個7個のことです。

  • dejiji-
  • ベストアンサー率38% (327/858)
回答No.3

一番右の数値を合計すればいいのでしょうか。 データ数をカウントするのでしょうか。 数値の合計ならまず、表の一番上に項目を作ってください。 例えば、400の列は番号、70円は金額などのように、A列からD列まで その隣、F列に抽出したい項目をおなじ名前でFからHまで付けます。その下に抽出したいデータを入力する。 合計したいセルに=DSUM(項目を含めたデータ範囲,合計する列の項目部分,F列に作った抽出用の範囲) データ数のカウントならDSUMをDCOUNTに変更してください。 最後にDSUMで出た数値に単純に6を掛ける。 >400で70円でadなものの >なおかつ これ同じことですよね。

yoshi51
質問者

お礼

返事が遅くなりました 本当にアドバイスありがとうございました アドバイスのおかげで 無事に問題が解決することができました。 心から感謝いたします。 本当にありがとうございました。

yoshi51
質問者

補足

あの いわゆる aでありbでありなおかつcであり dでもありeでもある もののカウントを 一番下の行の 一つのセルのみで行いたいんですよ 意味わかりませんかね すいません 沢山抽出するのがあるので それではできないです スイマセン

  • sero
  • ベストアンサー率47% (916/1944)
回答No.2

ぱっと思いついた一例です。 前提条件として、「70円」や「6個」が数値として入力されているとします。 (文字列として入力されているなら補足して下さい) それぞれのデータがA1~D4セルに入力されているとして、E1セルに 下記数式を入力してE4セルまでフィルします。 =IF(A1&"_"&B1&"_"&C1="400_70_ad",D1,"") (抽出条件が多いなら、and関数を使用した方が簡単かも) 抽出条件に合致するデータの個数を求めるなら、下記式を任意のセルに入力 =COUNTIF(E1:E4,">0") 総個数なら単にsumで良いでしょう。 =SUM(E1:E4) (sumifでも可)

yoshi51
質問者

お礼

返事が遅くなりました 本当にアドバイスありがとうございました アドバイスのおかげで 無事に問題が解決することができました。 心から感謝いたします。 本当にありがとうございました。

yoshi51
質問者

補足

あの いわゆる aでありbでありなおかつcであり dでもありeでもある もののカウントを 一番下の行の 一つのセルのみで行いたいんですよ 意味わかりませんかね すいません 沢山抽出するのがあるので それではできないです スイマセン

  • HAL007
  • ベストアンサー率29% (1751/5869)
回答No.1

オートフィルターで条件に一致した行だけを表示出来ます。 抽出できたら空きセルに6倍の数式を入れれば出来ます。

yoshi51
質問者

お礼

返事が遅くなりました 本当にアドバイスありがとうございました アドバイスのおかげで 無事に問題が解決することができました。 心から感謝いたします。 本当にありがとうございました。

yoshi51
質問者

補足

あのそういうことではなくて 関数で 400で60円でabのものは何個あるかを求める式を知りたかったんですよ。 ”なおかつ” と言えばいいのでようか 複数の条件の抽出したいということなんですよ。 またその抽出したデータの列に記載された個数の合計を求める式も知りたいんですが 本当によろしくお願いします。

関連するQ&A

専門家に質問してみよう