• ベストアンサー

Excelでセルに「小計」と入力したら自動に計算してくれる関数

行タイトルが品名、数量、金額の表で、品名の列に途中で「小計」と入力すると、金額の列に数字が表示されるようにしたいです。 行が長くなり、「小計」が数回にわたり出てくる場合は、「前回小計をした次のセルから今回小計するセルの前まで」を計算させる訳ですが、どんな関数を使えばいいのかわかりません。(マクロを組むようになるのでしょうか) どうぞ、よろしくお願いいたします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>(マクロを組むようになるのでしょうか) 『「小計」と入力すると』をキッカケにするなら、マクロしかないでしょう。 質問にあるように動作するコードを書いてみました。 表のカタチは、 A1に表題『品名』、B1に表題『数量』、C1に表題『金額』があるとしています。 シート1で実行してみます。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 ここから ↓ Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Column <> 1 Then Exit Sub 'A列でなければ何もしない   If Target.Text <> "小計" Then Exit Sub '『小計』と入力されなければ何もしない   Dim curRow As Long '現在行   Dim startRow As Long '小計を開始する行   Dim rw As Long '行カウンタ   curRow = Target.Row   rw = curRow - 1: startRow = 2   '前回の『小計を探す』   While rw > 1     If Cells(rw, 1) <> "小計" Then       rw = rw - 1     Else       startRow = rw + 1: rw = 1     End If   Wend   If startRow > (curRow - 1) Then Exit Sub '『小計』行が続いたら何もしない   'B、C列に算式を書き込む   '数量を書き込む   'Cells(curRow, 2).Formula = "=SUM(B" & startRow & ":B" & (curRow - 1) & ")"   '金額を書き込む   Cells(curRow, 3).Formula = "=SUM(C" & startRow & ":C" & (curRow - 1) & ")" End Sub

chutohanpa
質問者

お礼

早々のご回答をありがとうございました。 できました!(私はコピーしただけですが)マクロ初体験です。 便利ですね。この機会にマクロを勉強してみます。 しかしエクセルって奥が深いですよね。

その他の回答 (2)

  • comv
  • ベストアンサー率52% (322/612)
回答No.3

こんばんは   A   B   C   D 1 品名  数量  単価  金額 2 **  **   ***  =IF(B2="","",B2*C2) 3             式 4             ↓ 5             ↓ 6             ↓ :             ↓ 式 =IF(A3="小計",SUM(D$2:D2)-SUMIF(A$2:A2,"小計",D$2:D2)*2,IF(B3="","",B3*C3)) で如何でしょうか!

chutohanpa
質問者

お礼

はじめまして。 早々のご回答をありがとうございます。 SUMIF関数ですね! とてもいい勉強になりました。

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

似たようなものでご辛抱できませんか。 テストデータとして下記をA1:c6にいれる。 ミソは分類という(名称は何でも良い)列を設けることです。そして第2行に1をいれる(Aでもアでも良い)。商品の小計を出したいところまで1をフィルハンドルで複写する。本例ではA4行まで1を複写。 同じくA5に2を入れA6まで複写。すると下記の状態になります。本番ではこれを繰り返す。 分類 商品 数量 1 A 2 1 B 3 1 C 4 2 D 1 2 F 2 データ-集計-をクリック。集計の設定のダイアログになる。 グループの基準-分類 集計の方法-合計 集計するフィールド-数量 集計行をデータの下に挿入するを確認して OKをクリック。結果は下記の通り。 分類 商品 数量 1 A 2 1 B 3 1 C 4 1 計 9 2 D 1 2 F 2 2 計 3 総計 12 「1計」等の表現が「小計」でないが小計という字も入力不要です。A2に東京と内容を打ちこめば東京計となる。 これらは関数SUBTOTALの機能を使っています。

chutohanpa
質問者

お礼

はじめまして。 早々のご回答をありがとうございました。

関連するQ&A