• ベストアンサー

SUBTOTAL関数の不思議

SUBTOTAL関数で期待する合計が出せません。 A列   B列   C列   D列 品名   数量   単価   金額 A     1    100    100 B     2    200    400 C     3    300    900 小計               0 →ここが期待どおりでない D2セルの式は =IF(A2="品名",SUBTOTAL(9,INDIRECT("D$2:D"&ROW()-1)),B2*C2) でD5までコピーしました。 つまりA列が"小計"でないときは数量×単価を、"小計"と入力されていたらD2:D4をSUBTOTALで集計するつもりなのに結果が0になってしまいます。 ちなみにD5に =SUBTOTAL(9,D2:D4) と手入力しても結果は0でしたが、D列に金額を直接入力すれば小計は正しく表示されます。 理由がおわかりの方、教えてくださいませんか

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 もともと、SUBTOTALは、その計算範囲の中の数式に、SUBTOTALを感知すると、それを計算しないという特性を持っています。 =IF(A2="品名",SUBTOTAL(9,INDIRECT("D$2:D"&ROW()-1)),B2*C2) それと、その式は「品名」ではなく、「小計」だとは思いますが、こういう統一式で、フィルダウンで、コピーしようとしても、そのような計算は使えません。 たとえばこのようにするには、 品名  数量  単価  金額 A    1  100    100 B    2  200    400 C    3  300    900 小計          1,400 E    4  200    800 D    4  300   1,200 E    3  400   1,200 F    2  500   1,000 小計          5,600 (ただし累計です) 統一式で行おうとするなら、 D2に、 =IF(A2="小計",TEXT(SUM($D$1:D1),"#,##0"),B2*C2) のようにして、D列を右揃えにして、フィルでドラッグコピーしてあげないと出来ません。 本来は、小計の部分にのみ、SUBTOTAL(9,...) を使います。

concatena
質問者

お礼

回答ありがとうございます。またお察しのように =IF(A2="品名",SUBTOTAL(9,INDIRECT("D$2:D"&ROW()-1)),B2*C2) です なるほどセルにSUBTOTALの文字があるだけで「ネストしている」と認識されてしまうのですね。 教えていただいた方法+自行より上の小計累積を引き算する方法を考えてみます

その他の回答 (2)

回答No.3

ご質問内容の数式とサンプルで確認したところ、長い数式も短い数式も答えとして 「1400」が戻りましたので、数式自体は問題ないのかな?と思ってみたり。 意表をついて計算方法が「手動」になっていませんか? ツール→オプション→計算方法→「自動」にチェックは入っていますか?

concatena
質問者

お礼

「手動」ではなかったようです 回答ありがとうございました

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

HELPを見ると次の条件がありましたので、範囲内にSUBTOTAL関数が使用されている為、計数されないのではないでしょうか。 ※範囲内に他の集計値が挿入されている場合、ネストされている集計値は、計算の重複を防ぐために無視されまます。 案ですが、SUBTOTALをSUM関数に変更すれば計数しますが如何でしょうか。

concatena
質問者

お礼

回答ありがとうございました SUBTOTAL関数はSUBTOTAL関数の値を無視することは知っていましたが、IF文で分岐してSUBTOTAL関数ではない計算式で求めた値は合計してくれるものと早合点していました。

関連するQ&A

  • エクセルで注文書→請求書を作っていて困っています。

    下記のような注文書がSheet1にあります。 A列  B列 C列  D列 E列 品名  数量 単位 単価  小計 りんご 1  個  100 ¥100 みかん 0  個   30 ¥ 0 バナナ 2 本  100 ¥200 スイカ 2  個 200  ¥400 メロン 0 個  300 ¥ 0      合計 ¥700 上表のような顧客が数量を入力すれば小計が出るとこまでは出来ています。 Sheet2に注文のあった品目のみで請求書を生成したいのですが、 良い方法がありましたら教えていただけますでしょうか。 A列  B列  C列  D列  E列 品名  数量 単位  単価  小計 りんご 1  個   100 ¥100 バナナ 2 本   100 ¥200 スイカ 2  個 200  ¥400       合計 ¥700 ※要するに品名のラインナップがある中で0個のものは飛ばして  上図のような形に自動生成できるものが希望です。 色々な関数を試してみましたが、結果関数の意味も分からずやっているので、 なかなか思うようにできなくて困っています。 どうぞ、良い方法がありましたらご教示の程、よろしくお願いいたします。

  • SUBTOTALの金額を条件付きで表示させたい

    現在、M列(M11~M1641)の合計金額をSUBTOTALで小計金額を出しているのですが、免税・課税と2種類の小計を2つのセルに分割して出したいのですが、A列(A11~A1642)免税の分と課税分で分けて入力しています。C列に顧客(複数ある)とQ列に荷主(複数ある)条件で小計を出すにはどのようにすればいいでしょうか? 当初SUMIFSでA・C・Q列の条件で分けてだそうと考えましたがうまくいきませんでした。 フィルターを掛けた時に、うまくでませんでした。 何かいい方法はないでしょうか?

  • subtotal関数についての質問です。

    subtotal関数をつかって、練習をしています。どんな練習かといいますと。 A店、B店の月別売り上げを計算して月ごとの小計をだします。そして年間の総売り上げをだしているという作業なんですが、この総合計で、なぜsubtotal関数ですべての値をドラッグしているのに小計だけ除かれてしまうのかわかりません。

  • Excelの数式教えて下さい・・・

    どうにか自分でやってみようと、教えて頂いたページを参考に試みたものの、やはり無理でした(T_T) こんな私に教えて下さい。 自動車燃料の請求書を作成したいのですが、  A列   B列 C列  D列  品名   数量 単価  金額(数量*単価) レギュラー 20 90 1890  軽油   10 50 188  灯油   30 30 945 軽油税(軽油数量*32.1)=X 品名、数量、単価は手入力(と言う?)です。 (1)「品名」に「軽油」と入力された時のみ「単価」から 32.1の値を差し引いた額を数量を掛けた値を「金額」 に出すようにしたいのです。   (2)請求書の最後に「軽油」のみの総数量に32.1の値が 自動的に出るようにしたいのですが・・・ 私に分かったのは、数量と単価を掛けて「金額」をRoundを使用して四捨五入できた事だけです・・・(しかもレギュラーと灯油のみ) 専門用語も分からない為、かなり把握しずらいとは思うのですが、なにとぞよろしくお願い致します。 もし、よろしければ具体的に数式などを教えて頂ければ 是幸いです。     

  • ExcelのVLOOKUP関数について教えて下さい。

    こんばんは。 下の表をExcelでVLOOKUP関数を使用して、品名と単価を求めたいのですがうまくできません。 エラーがでるそうなのですが、品名のところに1000が表示されます。 絶対参照は使用しました。 どなたかやり方を詳しく教えていただけないでしょうか? よろしくお願いします。 (ケーキ売上日計表) A列4に伝票番号、B4品番、C4品名、D4数量、E4単価、F4売上金額です。 伝票番号 品番 品名 数量 単価 売上金額 1 K001 256 2 M002 157 3 M001 219 4 K002 135 (品名別金額一覧表) A11~C15に 品番 品名 単価 M001 丸型クリーム 2,000 M002 丸型チョコ 3,500 K001 角型クリーム 3,000 K002 角型チョコ 2,500

  • Excel VBA 「小計」と入力したら自動計算

    エクセルの小計の計算について質問いたします。    A列    B列      C列   D列     E列    F列 1 施設名  2      商品名,内容   1    単位     単価    金額(数量×単価) 3      商品名,内容   1    単位     単価    金額(数量×単価) 4                              小計     ●●●● ――――――――――――――――――――――――――――――――― 5 施設名 6      商品名,内容   1    単位     単価    金額(数量×単価) 7      商品名,内容   1    単位     単価    金額(数量×単価) 8      商品名,内容   1    単位     単価    金額(数量×単価) 9                              小計     ●●●● ―――――――――――――――――――――――――――――――――                                合計     ●●●● 施設名ごとに項目が複数あり、施設ごとに項目の数も違います。 これを施設ごとに●の所に小計を出したいです。 「小計」が数回にわたり出てくる場合は、「前回小計をした次のセルから今回小計するセルの前まで」を計算させる訳ですが、どんなVBAを組めばいいのかわかりません。 理想としてはにE列に小計という文字を入れるとF列に自動で計が出るようにして、さらに小計の合計を最後の行のセルにだしたいです。。 さらに、見やすくなるように小計の下のセルにA~Fの間に太線を引いて施設ごとの区切りがわかるようにしたいです。。 繰り返し作業ばかりで大変です。 どなたか知恵をお貸しください。

  • 自動入力項目に手入力もできるようにしたい。

    簡単に説明します。 次の表を作成しています。 品名 単価 数量 金額 ーーーーーーーーーーー 品名を入れると次の単価表から単価を表示し、数量を入れると金額を計算して表示します。このとき特定のD、Fについては、その都度単価を 手で入力したい。D、Fの単価表には9999と仮にいれてあります。  単価表 ーーーーー A  10 B 100 C1000 D9999 E   1 F9999

  • Excel関数:SUBTOTALとSUMIFを組み合わせる?

    下記のような場合の集計ができる関数を教えて下さい。 SUBTOTALとSUMIFを組み合わせようと思ったのですが、うまくいきませんでした。 よろしくお願いします。 <表の内容> ・セルA1:「ランク」 ・セルA2~A50:「A」or「B」or「C」を入力している ・セルB1:「金額」 ・セルB2~B50:各金額を入力している <集計方法> ・セルB51に「ランクが"A"」の金額合計を表示したい ・ただしオートフィルターを使って他の条件で抽出もおこなっているのでSUBTOTAL関数のように、表示されている行の値のみを合計したい

  • エクセルのSUBTOTALの使い方

    QNo.405923でSUBTOTALの使い方を質問したものですが その後、自分でやってみましたが、以下SUBTOTAL形式で 最後に合計を出すと商品Aを計算せず商品BしかSUBTOTALで合計が出てくれません。やり方に問題があるのでしょうか。(ちなみに、商品Bのように、複数行のSUBTOTAL 同士 では、うまくいきます) 商品  個数  単価  値段 計算式  A 1 60,300 \60,300 =SUBTOTAL(9,RC[-1]) B 1 157,920 157,920 (B付属品)2 14,400 28,800 \186,720 =SUBTOTAL(9,R[-2]C                      :R[-1]C) 合計 \186720 =SUBTOTAL(9,R[-4] C:R[-1]C)  

  • Excel 連番の関数(SUBTOTAL)のコピー方法

    今使用している下記のような表があるのですが、同じシート内に上下に合計表があります。 SUBTOTALを使ってオートフィルタでB列が a またはb を選んだ時でも A列が連番になるよう、C列の合計が絞り込み後もに計算させるように簡単ではありますが、こんな表があるのですが、 今後上下の表の一部データを入れ替えする作業もあり、普通にコピーをしていれかえさせたいのですが、うまくいかない為、 $絶対参照を変えたりと、いろいろ試しているのですが、うまくいきません。 知恵をお貸し頂きたく、質問させて頂きました。 可能であれば教えて頂きたいのですが、 どうかよろしくお願いします。 -------------------------------------------------------      A   B    C    A1=SUBTOTAL(3,$B$1:B1)  1   1   a    1 2   2   b    1     A2~A4=コピー 3   3   a    1 4   4   b    1 5   合計 aまたはb       C5=SUBTOTAL(3,C2:C4) 6-------------------------------------------------- 7   1    a    1    A7=SUBTOTAL(3,$B$7:B7) 8   2    b    1    A8~A10=コピー 9   3    a    1 10  4    b    1      11  合計  aまたはb      C11=SUBTOTAL(3,$B$7:B7) -------------------------------------------

専門家に質問してみよう