• ベストアンサー

条件のあったデータのみを抽出する

Excel(Ver.97 or 2000)なんですが、A列に会社名、B列に条件、C列に金額が入っているとします。 A列の会社名は複数あり、しかも同じ会社名が幾つも入っている場合もあります。但し同名の会社でも"〃"は用いずにきちんとフルネームで入力します。B列の条件は"1"か空白です。それで例えばA列に「海山商事」という社名が12行分入力されていて、B列には"1"と入力されている部分が5つあった場合に、「会社名が海山商事で、且つB列に"1"が入力されている」金額のみを抽出させる関数式が知りたいのです。宜しくお願い致します。

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

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

あ、合計を出したい、ということだったんですか。 SUMIFでは、複数条件の指定などは出来ないようなので、他の機能を使うことになりますね。 ・例えば、ピボットテーブルでも出来ますよね。 「列」欄に[社名]と[条件]をドラッグして、[値]を金額の合計に設定すれば、仰るような機能が実現できますね。 ただし、ピボットテーブルを使った場合、思うようなレイアウトが実現しにくかったり、いちいち再計算させてやらないと、結果が反映できなかったり、デメリットもありますが… ・それ以外の方法としては、やはり、IF 関数でしょうか。 A列:社名, B列:条件, C列:金額, D列:抽出条件(社名), E列:抽出結果(金額)とすると、 IV列などの目立たない位置に =IF(B2=1,C2,0) ってな具合に入力しておいて、E2のセルに =SUMIF(A:A, D2, IV:IV) と入力すれば良いんじゃないかと思います。 IV列の文字色を白にして、シートの保護とかも併用すれば、この「余分な項目」をあまり目立たなくさせることが出来ると思います。 ・たとえ目立たなくたって、余分なセルが使われるのがイヤだって場合には、「配列数式」を使うって手もあります。 E2のセルに =SUM(IF(A$2:A$55=D2,IF($B$2:$B$55=1,$C$2:$C$55,0),0)) と入力し、『[Ctrl]+[Shift]を押しながら』、Enterで確定します。 あとは、E2のセルを社名の数だけ複製すれば完成です。 ただし、これを使った場合、数式を編集するたびに[Ctrl]+[Shift]+[Enter]で確定しなおさないといけないので、ユーザーがどうあっても数式の部分を触れないように、「シートの保護」機能との併用が必須だと思われます。

skyhawk
質問者

お礼

うおぉぉぉぉぉ~~~!!!! す、素晴らしい!! 流石ですヨ!ARC様。 これぞ私が願っていた回答です。早速やってみましたが、 条件通りの答えがピタリ、と出てきました。 遅くまで私の疑問にお付き合い下さいまして、 感謝!感謝!でございます。 今後とも宜しくお願いします。 P.S 100ポイント位入れたいとこなんですが・・・・

その他の回答 (3)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

…と思ったら、再表示をさせてみると「"」の部分は正常に表示されていました(T^T)。 どうやら、「質問に答える」を選択した時のみに特有な現象のようです。 さっきの「"」うんぬんは、忘れてください(^^;)。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

補足です。 #1のIF(AND…の部分を =IF(AND(A1=”海山商事”,B1=1),C1,””) とすると、直接、金額だけを抜き出すことが出来ますね。(うっかりしてました) … あと、OKWebのエラーだと思いますが、「”」(ダブルクォーテーション)「"」に勝手に変換されてしまっていますね。 エディタやExcelの置換機能で、「"」(半角)を「”」(半角)に置き換えてください。m(__)m 上例の「”」(全角)は、Excelに貼り付けると、自動で半角に変換してくれるので、問題ないです。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

「オートフィルタ」を使えば簡単です。 範囲の最初の行をクリックし、[データ]-[フィルタ]-[オートフィルタ]と操作してください。 A列の先頭の下向き三角をクリックし、「海山商事」選択、B列も同様に「1」を選択すると、「海山商事」かつ「1」の行が抽出されます。 関数でするなら、「IF()」ですかね。 使われていない列に、 =IF(AND(A1="海山商事",B1=1),"*","") ってな感じで入力し、これを行の数だけ複写。 その後、シート全体を選択してから、[データ]-[並べ替え]で、"*"のある行だけを集めます。

skyhawk
質問者

補足

ARC様、早速のご回答ありがとうございます。 「オートフィルタ」を使う。良いアイディアですが、ユーザー側でそのような操作をさせるワケにはいかんのですヨ。ユーザーは単純にA列に社名とB列に条件の有無、C列に金額を入力するだけなのです。入力する社名は予め決まっているので、D列には縦に会社名の一覧があります。 で、そこの社名の直ぐ右側(例えばD3に海山商事と入っていたら、E3に「条件"1"に合致する金額の合計」をスパーンと表示させたいのです。入力範囲を検索して条件が海山商事の金額の合計、とかはSUMIF関数で出来たのですが、 「このように→=SUMIF($A$2:$A$55,D3,$C$2:$C$55)」 尚且つ条件"1"の場合は?とか"空白"の場合は?とかが分らなかったので、こちらにヘルプをお願い致しました。 我侭言って済みません!

関連するQ&A