• ベストアンサー

エクセルの合計について教えてください。

エクセルの合計について教えてください。 すごく単純な質問です。 商品の今月の毎日の売り上げリストです。 毎日売り上げがあるので、日々、行数が増えていきます。 何行増えるかはわかりません。 トータルの値も、もちろんそれに応じて増えていきます。 で、 上のほうに合計を表示するなら分かるのですが、 画面の一番下に、合計を常に表示させたいのです。 でも、タイトル行も固定したい。 できますか?

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

ほんとぉ~!に何度もごめんなさい。 前回のコードは正しく表示されませんでした。 E列の最終行の取得がうまく機能していなかったようなので、 データがない場合でもE列の合計セルの「0」と手入力して↓のコードでマクロを実行してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i, j As Long i = Cells(Rows.Count, 5).End(xlUp).Row - 2 j = 4 j = Target.Column If j <> 4 Then Exit Sub Range(Cells(i + 1, 1), Cells(i + 1, 5)).Copy Range(Cells(i + 2, 1), Cells(i + 2, 5)).Insert (xlDown) Cells(i + 3, 5).Value = WorksheetFunction.Sum(Range("E2:E" & i + 1)) Application.CutCopyMode = False Cells(i, 1).Offset(1).Select End Sub こんどはうまく表示されると良いのですが・・・ 本当に何度も失礼しました。m(__)m

pluto1991
質問者

お礼

本当に、色々検討していただいて感謝します。 Eの総合計にゼロを入れたらうまくいきましたよ。 ありがとうございます。 紙ベースの帳簿って、トータルは一番下ですよね。 エクセルでも集計にすれば下に合計が来ます。 見やすさから言ってもそれが自然です。 単純な「総合計を表示する」ことがなぜできないのかなと不思議だったのです。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.3・4です! 何度もごめんなさい。 前回の投稿で間違いがありました。 >行の最終アクティブ列(手入力する最後のセルの列番号)は「4」としています。 結局E列をTagetとしていますので・・・ の部分は E列がTargetではなく「D列」の間違いです。 どうも失礼しました。 それからコードの説明が不十分のような気がしますので、 もう一度コードと説明文を載せておきます。 (またまた・・・前回より少しコードが変わっています) Private Sub Worksheet_Change(ByVal Target As Range) '変数の宣言 Dim i, j As Long '「i」はE列の最終行(合計セル)より1行上の行番号を設定 i = Cells(Rows.Count, 5).End(xlUp).Row - 1 '変数「j」を「4」に設定 j = 4 '「j」をTarget(選択セル)の列番号に設定 j = Target.Column '「j」が4以外であればマクロを実行しない If j <> 4 Then Exit Sub 'A列の最終行の1行上~E列の最終行の1行上(空白行)をコピー Range(Cells(i, 1), Cells(i, 5)).Copy 'A列~E列のコピー元の行の下に行を挿入して、貼り付け Range(Cells(i + 1, 1), Cells(i + 1, 5)).Insert (xlDown) '合計セルの値はE2~E列の最終行より1行上までの合計を表示 Cells(i + 2, 5).Value = WorksheetFunction.Sum(Range("E2:E" & i)) 'コピーモードを解除 Application.CutCopyMode = False 'A列の最終行(合計文字列セルは除く)の1行下のセルを選択 Cells(i, 1).Select '←ここでの「i」は行挿入前の「i」の値になる End Sub 上記のコードは説明文も含めてこのままコピー&ペーストしても構いません。 以上、あくまで一例ですので、他に良い方法があるかもしれません。 どうも何度もごめんなさいね。m(__)m

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です! 補足を読ませてもらいました。 昨日はあわててコードを入力したので細かいところは確認せずに投稿してごめんなさい。 >質問1 に関して おっしゃられるように合計セルに数式を入れていると3行目以降にデータがあると 間違った数値が表示されますので、 当初のE4セルには何もしません。 コードで最後にE2~合計行の1行上までを合計するようにしています。 >質問2 に関して 今こちらでもう一度表を作成(前回の表の配置通り)を作成し、同じコードを張り付けて実行してみました。 エラーは確認されませんでした。 それからコードの説明を少しさせていただきます。 前回の表で「小計」の列に数式が入っているとしてのコードですので 当初のE列の数式(E2セルの数式)は =IF(COUNTBLANK(C2:D2),"",C2*D2) としてE3セルまでオートフィルでコピーしています。 それからコード内の「i」の値を勝手に「4」としていますが 5列目は数式が入っている前提としていますので、E列がアクティブになることはないということで 行の最終アクティブ列(手入力する最後のセルの列番号)は「4」としています。 結局E列をTagetとしていますので、E列のアクティブが変更されるとマクロが実行されるようにしています。 ご自身の表で「j」部分は適宜変更してみてください。 最後に合計行の1行上の空白セルを行挿入し、コピー&ペーストしていますが 単純に行挿入だけでは空白行にある数式が反映されませんので、コピー&ペーストにしています。 尚、前回のコードではこのカット&ペーストモードがそのままですし、 余計なコードもありましたので少しコードを訂正させてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i, j As Long i = Cells(Rows.Count, 2).End(xlUp).Row - 2 j = 4 j = Target.Column If j <> 4 Then Exit Sub Range(Cells(i + 1, 1), Cells(i + 1, 5)).Copy Range(Cells(i + 2, 1), Cells(i + 2, 5)).Insert (xlDown) Cells(i + 3, 5).Value = WorksheetFunction.Sum(Range("E2:E" & i + 1)) Application.CutCopyMode = False Cells(i, 1).Offset(1).Select End Sub ではどうでしょうか? 以上、長々と失礼しました。 何とかエラーにならないことを祈っています。m(__)m

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 参考になるかどうか判りませんが・・・ 元の表がどのような感じかわからないので 勝手に↓のような表を作ってみました。 E列には数式が入っているものとしています。 最初の表作成段階で合計と入力行の間は必ず2行あけるようにしています。 操作したいSheet見出し上で右クリック → 白い画面が出ますので ↓のコードをコピー&ペーストしてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i, j As Long i = Cells(Rows.Count, 2).End(xlUp).Row - 2 j = 4 j = Target.Column If j <> 4 Or Cells(i, 5) = "" Then Exit Sub Range(Cells(i + 1, 1), Cells(i + 1, 5)).Copy Range(Cells(i + 2, 1), Cells(i + 2, 5)).Insert (xlDown) Cells(i + 3, 5).Value = WorksheetFunction.Sum(Range("E2:E" & i + 1)) Cells(i, 1).Offset(1).Select End Sub これでD列(単価)が確定すると行が1行挿入され、最下段に合計が表示されると思います。 画像では右側の表が左側のように変化していきます。 以上、この程度ですが 参考にならなかったら読み流してくださいね。m(__)m

pluto1991
質問者

補足

ありがとうございます! とても興味深いです。 もう少し、詳しくお教え願えますか? 空白の2行の表までは作りました。 質問1 小計の合計欄に入れる数式、(当初E4)は =SUM(E2:E3) でいいのでしょうか。 行が増えていったらおかしいですよね? 質問2 空白の1行目に日付からデータを入力し始めた時、 どのセルに入力しても、エラー表示が出ます。 実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。 デバック If j <> 4 Or Cells(i, 5) = "" Then Exit Sub が黄色表示 質問3 1行目の入力が終わっても上記のエラーで新しい1行は増えません、 しかし、空欄の2行を入力すると、1行目のコピーが1行増えます。 わたしは、関数は理解していますが、VBはさっぱりです。 出来れば、一連のコードに書かれている意味をお教え願えませんでしょうか。 ずうずうしくて申し訳ないんですが。

全文を見る
すると、全ての回答が全文表示されます。
noname#187541
noname#187541
回答No.2

こんにちは。 1行目がタイトルで2行目から売り上げが入力されているとします。 合計は1行空けて表示します。 列はどこでもいいですが、仮にA列とします。 合計の行には =SUM(INDIRECT("A2:A"&ROW()-2)) と入力します。 売り上げの入力が何もない状態だと 合計は3行目になります。 売り上げの入力はちょっと面倒ですが、合計行の一つ上、合計が3行目に有れば2行目を選択して行を挿入してから入力すれば、合計行は下に下がります。 あとはVBA(マクロ)を使う方法でしょうか。

全文を見る
すると、全ての回答が全文表示されます。
noname#145943
noname#145943
回答No.1
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelの条件検索による合計計算

    ExcelでA列に日付、B列に商品名、C列に売上金額を入れて、日々の売上管理をしています。最大でも500行と仮定します。 B列のりんごの合計、みかんの合計など商品ごとの合計を算出したいと考えています。B列の商品ごとの合計です。 この場合には、どの様な関数・数式を使用するのでしょうか? 宜しくお願いいたします。

  • エクセル 項目ごとの合計

    エクセルについて質問です。 何の項目があるのか分からない状態で、項目ごとの合計を出せる関数はありますか? 商品の売上明細のデータがあります。 商品名ごとに合計金額をだしたいが、商品名の列に何の商品があるかわかりません。 ピポットテーブルを使ったり、まず何の商品の明細があるかを調べてからSUMIF等使うといった方法以外で、何かありますでしょうか? 毎月商品ごとの売上金額を調べたいのですが、何の商品が売れるか分かりません。 できれば、予め数式を組んでおいて、売上明細データを貼り付けるだけで結果がでるようにしたいです。 商品数が多いため、全ての商品名の行を作るのは避けたいです。 よろしくお願い致します。

  • エクセルvlookup関数で値を取得したいリストの行数が多すぎてエクセ

    エクセルvlookup関数で値を取得したいリストの行数が多すぎてエクセルで表示できない 単純にa列をキーにしてb列の値を取得したいですがリストの行数が65***行以上でエクセルで開くと欠落します。リストはcsvでオープンしないで値を取得することはできますか? 宜しくお願いいたします。

  • エクセルの個々の合計値

    ご質問があります。 エクセルを使って大量行数の計算を考えております。 どなたか関数などのアドバイスを頂けないでしょうか。 1.左セル(値)には数値が始めから入力あり。 2.右セル(合計値)に左セルの合計値を反映したい。 3.左セル(値)の値が空白でない限り上から順に足し算する。 4.左セル(値)の入力が始まっているところに右セル(合計値)を反映したい。 5.左セル(値)の空白行数はランダムである。

  • Excelで月別の合計等を出す方法を教えてください

    Excel初心者です。 Excel2003で売上表を作っています。 1行にお客さん毎の売上で、売上日、売上額の列を作っています。 名前 商品名  数量  日付  金額 A  コーヒー 2   3/15  1000 B  紅茶   5   3/20  2000 C  コーヒー 3   4/10  1500 D  緑茶   10   4/22  7000 ・ ・ 月別合計売上額、合計客数などの表を作りたいのですが どのようにしたらよいのでしょうか? 一応Excelの本などを読んだのですがよくわかりませんでした。 よろしくお願いします。

  • エクセル

    エクセル エクセルの使い方で質問です。 商品A 売上 2個 1,000円 商品A 返品 1個 -500円 商品B 売上 2個 1,000円 商品C 売上 3個 1500円 と、一つの商品ごとに売上の行と返品の行に 分かれてて、必ずしも売上と返品があるとは限らない場合、 商品A 売上 2個 1,000円 返品 1個 -500円 というように、1商品を一行にまとめたいのですが、なにかいい方法はありますでしょうか? 行数が多いので、一個一個移動させるのは 無理そうです。

  • エクセルで各品毎の合計を出すには

    エクセルで納品書を作ったのですが、 何軒もある顧客の納品書の中から、共通した商品の合計価格を 自動で計算させるにはどのようにすればいいでしょうか? 例えば、A B C D という名前の顧客があって、あ い う え お という商品があり、 A~D の (あ)なら(あ) という商品の売り上げ数と売上合計金額を出したい。という感じです。 (あ~お まで、全部出るようにしたいです) 商品の単価は顧客毎に、少し違っていたりします。 vlookup関数を使うのかなぁ、とか思ったりするのですが、納品書は何枚にもなっているし、 データベース?(よく分かってません)みたいなのを使うのかな、とか。 分かりやすく教えてもらえるとありがたいです。 エクセル2010です。 エクセル2003の場合も教えてもらえると、なおありがたいです。 書き足らないところがあれば言って下さい。 よろしくお願いいたします。

  • エクセルで2つのセルの合計から最小値検索

    エクセルで2つのセルの合計の一番小さい合計のものが どの区分か、その値はどれかを検索したいのですが、 前にことらで質問して回答していただいたものを参考に 考えてみたのですが、INDEX、MATCHと組み合わせてもうまく検索 できませんでした... 分かる方おられましたら、どうか教えていただきたいです よろしくお願いします。 データはB2~X4まではいっていて、(実際にはもっとたくさん行があります) Y列には、3行目と4行目の商品の列の合計の一番小さいものの 区分を表示したく、 Z列にはその値を表示したいのですが、 欲をいえば合計の行を追加しなくてもY列Z列に表示させることは 可能でしょうか?      B列  C列  D列  E列    X列     Y列   Z列 2行目 区分  1区分,2区分,10区分、、、5区分    3行目 りんご1  3  、 15 、 20 、、、1     5区分    1 4行目 りんご2 15  、 10 、 6  、、、12    5区分   12 よろしくお願いします。

  • エクセルで下の行から合計とかを求めたいです。

     ほぼ毎日最終行の所にA列に日付 B/C/D/列に数値を加えているという作業を繰り返しています。従って下の方が最近入力した値になっている状態です。 私がしたいのはこの最近入力した(最終行)行から5行上までの各列の合計や平均値をそれぞれ1番上の方に自動で表示したいのですがいろいろと調べても分かりません。(行を追加するたび範囲を指定し直すというのがつらいです。) このような事はエクセル2003で可能でしょうか?  調べた中では最終行を取得するとか最終行の値を表示するというのは見つけれたのですがここ何日も悩んで解決できません。  よろしくお願いします。

  • エクセルでそれぞれの合計を纏めたい

    以下のようなデータ(膨大です)があるのですが、 9月1日 A(商品名)XA(単価)YA(売上数)ZA(単価×売上数)     B     XB    YB     ZB     C     XC    YC     ZC  … 9月2日 A     XA    YA     ZA     B     XB    YB     ZB     C     XC    YC     ZC      … 表にするとかえって分かりにくいですが、要するに商品が400種類くらいあって、9月1日~30日の間にそれぞれ売上があったというわけです。 その400種類の商品の9月分のそれぞれの売上個数の合計と、それぞれの売上金額の合計を算出したいのです。つまり 9月 A  XA  YA合計  ZA合計 B  XB  YB合計  ZB合計 C  XC  YC合計  ZC合計 … というように纏まった表を作りたいのです。 説明が下手で本当に恐縮ですが、エクセルで私の望むような計算はできますでしょうか?

専門家に質問してみよう