プロが教えるわが家の防犯対策術!

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

A 回答 (3件)

>(マクロを組むようになるのでしょうか)


『「小計」と入力すると』をキッカケにするなら、マクロしかないでしょう。

質問にあるように動作するコードを書いてみました。

表のカタチは、
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
    • good
    • 1
この回答へのお礼

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

お礼日時:2002/09/13 09:36

こんばんは



  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))

で如何でしょうか!
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/09/13 09:22

似たようなものでご辛抱できませんか。


テストデータとして下記をA1:c6にいれる。
ミソは分類という(名称は何でも良い)列を設けることです。そして第2行に1をいれる(Aでもアでも良い)。商品の小計を出したいところまで1をフィルハンドルで複写する。本例ではA4行まで1を複写。
同じくA5に2を入れA6まで複写。すると下記の状態になります。本番ではこれを繰り返す。

分類商品数量
1A2
1B3
1C4
2D1
2F2
データ-集計-をクリック。集計の設定のダイアログになる。
グループの基準-分類
集計の方法-合計
集計するフィールド-数量
集計行をデータの下に挿入するを確認して
OKをクリック。結果は下記の通り。
分類商品数量
1A2
1B3
1C4
1 計9
2D1
2F2
2 計3
総計12
「1計」等の表現が「小計」でないが小計という字も入力不要です。A2に東京と内容を打ちこめば東京計となる。
これらは関数SUBTOTALの機能を使っています。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/09/13 09:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!