Excelで1ヶ月の売上表の日付毎の合計を最終行に表示する方法

このQ&Aのポイント
  • Excelを使用して1ヶ月の売上表の日付毎の合計を最終行に表示する方法について教えてください。
  • 現在、関数をセルにコピーする方法で最終行を探し、31日分コピーする必要がありますが、もっと簡単な方法はありますか?
  • Excel 2010を使用しており、シート名に依存しない方法で他のユーザーも使えるようにしたいです。ご教授いただけると嬉しいです。
回答を見る
  • ベストアンサー

マクロで可能ですか。

1ヶ月の売上表があり、下記のように 日付毎の合計を、その日付の最終行に表示するのはマクロなどで可能でしょうか。 関数をセルにコピーしていたのですが、 最終行を探し、31日分コピーするのが不評です。 (下記では簡略化しておりますが、1日分の行数が何十行とあります。) もっと簡単に出来ないのかと言われ、ご教授いただけると幸いです。 Excel2010です。 誰でも使用可能なように、シート名に依存しない仕様だと有難いです。 ご協力宜しくお願い致します。 A列       B列    C列   D列 2014/11/01  商品A  \1000 2014/11/01  商品B  \1200  \2200 ←11/1の合計  2014/11/02  商品A  \1000  \1000 ←11/2の合計 2014/11/03  商品C  \1500  2014/11/03  商品B  \1200  \2700 ←11/3の合計 : : 2014/11/30  商品A  \1000 2014/11/30  商品A  \1000  \2000 ←11/30の合計

  • j0b
  • お礼率100% (97/97)

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

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

No.1です。 投稿後 >最終行を探し、31日分コピーするのが不評です。 を見逃していました。 前回の方法は最終行を気にすることなく、これ以上データはない!というくらいまであらかじめフィル&コピーしておいても大丈夫だと思いますが、 どうしてもVBAで!というコトであれば、一例です。 (VBAでもやっているコトは同じです) Sub Sample1() Dim lastRow As Long lastRow = Cells(Rows.Count, "A").End(xlUp).Row If lastRow > 1 Then Range(Cells(2, "D"), Cells(lastRow, "D")).ClearContents End If With Range(Cells(2, "D"), Cells(lastRow, "D")) .Formula = "=IF(A2<>A3,SUMIF(A$2:A2,A2,C$2:C2),"""")" .Value = .Value End With End Sub ※ 関数の場合はデータ変更時に即座に結果が表示されますが、 VBAだとその都度マクロを実行しなければなりません。m(_ _)m

j0b
質問者

お礼

ご回答ありがとうございます。 何度もありがとうございました。 助かりました。

その他の回答 (1)

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

こんばんは! 当然VBAで可能ですが、今回の場合は関数で大丈夫だと思います。 前提条件として、A列日付は昇順に並んでいるとします。 ↓の画像でD2セルに =IF(A2<>A3,SUMIF(A$2:A2,A2,C$2:C2),"") という数式を入れフィルハンドルで下へコピーしています。 これで何とかご希望通りにならないでしょうか?m(_ _)m

j0b
質問者

お礼

ご回答ありがとうございます。

関連するQ&A

  • VBA(マクロ)について

    エクセルのマクロを使って下記のように実行を考えています。 A列のコード番号が一定ではないため、処理に困っています。 どなたかアドバイス頂けないでしょうか。 詳細についてです。A列にコード番号があり、B列に数値があります。 例えば、A列の1~3行目まで100とあり、4~5行目まで400と1~3行目と4~5行目の数値はおなじです。3行分だったり2行分だったりと不規則に下に続いていきます。 そのA列の同じコード番号全てに対して、B列の値を合計してC列に合計値を入力したいのです。 C列の合計値入力箇所は、A列の1~3行目までだとするとC列1行目に合計値がくるようにしたいのです。 ちなみに行数は10万桁ほどあります。

  • エクセルのマクロについて

    下記のデータについての質問です。 A列に日付、B列に10分単位の時間(0:00~23:50)そしてC列は空白か もしくは数字が入っているデータが10年分あります。 10分単位で10年分ですので 6×24時間×365日×10年ですので525600行になります。 更に閏年分一回につきプラス144行になるはずです。 しかし実際には途中何か所か日時が飛んでおり、またその部分が 空白になっておらず、詰まっているため行数が暦どおりより 少くなっております。 ここで質問なのですが 日時が飛んでいる個所を空白にして 行数を暦どおりにするにはどうすれば良いでしょうか? また、この時C列も一緒にずらせるようにしたいのですが どのようにすれば良いでしょうか? よろしくお願いいたします。 マクロでも良いので、どなたかご教授いただけませんでしょうか? ちなみにエクセルのバージョンは2010です。

  • エクセルのマクロ(行を挿入し連番を振る)

    ボタンを押すと以下のことを実行するマクロを作成することはできますか? A列2行目から 書類a 書類b 書類c 書類d 書類e C列2行目から 5 3 2 4 3 と入っています。C列は各書類の枚数です。 ボタンを押すと書類aと書類bの間に4行空白行が挿入され、A列とC列は増やした4行にそれぞれ書類a、5がコピーされ、B列には2列目から6列目まで1.2.3.4.5と連番が振られる。 というマクロです。 B列C列で1/5 2/5 3/5 4/5 5/5 であるという表現がしたいのです。(/は入りません) 書類が1枚の場合はB列C列共に空白で1/1とは入りません。 C列に入る書類の枚数により行が挿入されその書類の枚数分の連番が振られるようなマクロが作りたいです。 毎日何百行も手作業で挿入しコピーし連番を振る作業をしています。 決まった行数を増やすとか上の行をコピーするマクロならわかるのですが、C列の値を見て挿入する行数を判断するようなマクロができるのかわかりません。 どなたか教えて頂けないでしょうか。

  • エクセル セル参照での自動計算(マクロ必須?)

    いろいろ調べたのですが、あまりにも欲張った作業を自動的にさせようと していますので私の力では限界があり、皆さんのお力をお借りして ヒントでも教えて頂ければと思い質問をさせて頂きます。     A       B        C   (伝票NO)  (金額)    合計金額 1  001850   600     2  001850   300 3  001850   1580     2480 4  001851   2100     2100 5  001852   80     6  001852   1260 7  001852   800 8  001852   1260 9  001852   1260    10 001852   945 11 001852   945      6550 12 001853   1050 13 001853   420 14 001853   1260     2730 15 001855   1575 16 001855   1600     3175 17 001854   1260      18 001854   945 19 001854   12600     20 001854   425      15230 上記のファイルで A列を参照し、A列が同じ値になっている行分のB列の合計をC列へ自動的に 表示させたいのですが、どのような関数やマクロを使えばよいのでしょうか? 例)  001850がA1~A3の行まであるので  同じ行数分のB列(B1~B3)の合計を  C列のC3に表示 ●A列は番号順に並んでいない     ※001855から001854に戻る場合もある ●A列の行は1行の場合もあれば、複数行の場合もある また、同じような形式でファイルがたくさんあり ファイルごとにA列番号が違い、またA列の行数も違います。 このような場合はマクロを使用することになるのでしょうか? IF関数ですと限界があり また、せっかく作った関数式が別ファイルには論理式や真偽のセル値の違いで エラーが表示されると思います。 たぶんマクロを使わないといけないと思うのですが 最終的な目標として、「ファイルを開く」→「マクロ実行?」→「C列に合計表示」という 作業を自動的におこないたいです。 欲を出せば、C列の合計が表示されている行以外は全て削除させたいです。  ※上記の例ですが、C1、C2、C5、C6などの行を削除  ※削除させるので「形式を選択して貼り付け」→「値を貼り付け」という作業も   マクロで行う必要があると思うのですが…。 何かヒントになるよな事でも構いませんので ご教授願います。

  • excel関数にて困っております。

    初めまして、質問させてください。   b     c      a A1    1     1 3 B 2 C  4 1  4 ちょっと分かりづらいかと思いますが、下記を参照する方法がわかりません。 具体的に言うとAが商品名、aが日付で、最終入荷日を参照して別セルに表示したいのです。 他の質問等も見たのですが理解出来ませんでしたので教えて頂けないでしょうか? A行に入っているデータの最終列の上部のa B行に入っているデータの最終列の上部のb C行に入っているデータの最終列の上部のC

  • こんな空白入力マクロありますか

    OS:WinXp、Excel2002を使っています。下のようなデ-タがあり 60行目の処理を終えたら3行目から60行目まで同じ日付が自動的に入り、別の日に100行目の処理が終わったときに61~100行目まで処理日が自動的に入るようにしたいのですが? 処理行数が500行ぐらいある場合コピ-ではちょっと面倒かなと思いマクロでしたいのですが A列  B C・・・・H(日付) 1           3/1       2          3/1 3        4 ・ 60 ・ 100 ・ ・  

  • 最終行を取得して、別の列にコピーするマクロ

    最終行を取得して、別の列にコピーするVBAマクロを教えてください。 (Excel2003です) 具体的には、次の通りです。 (1)A2から下方に項目NOが入っています。可変です。  A2から項目NOの最終行までの行数をカウントします。 (2)B3:D3には数式が入っています。  B4:D4以下に数式を(1)で取得した行数分だけコピーします。 かなり緊急で困っています。 教えていただけると助かります。

  • EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか?

    EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか? 下記のようにならんだDATAがあります。   A列   B列  C列  D列  E列 (1行)2002/12/17 15240 15280 15220 15220 (2行) (3行) (4行) (5行)2002/12/18 15250 15250 15210 15210 (6行) (7行) (8行) (9行)2002/12/19 15220 15310 15220 15310 (10行) (11行) (12行) (13行)2002/12/20 15220 15260 15210 15230 (14行) (15行) (16行) (17行)2002/12/24 15300 15310 15270 15310 (18行) (19行) (20行) (21行)2002/12/25 15300 15340 15300 15600  . . . . . . . . . . . . . . . . . . . . . . . と,このようにDATAは日付の横に数値が4つずつ横に並んでおりますが、この4つの数値をその4つ目の数値の真横のF列から縦に4つ並べたいのですが、一気にできるマクロがないものでしょうか?下記のようにです。   A列   B列 C列 D列 E列  F列 2002/12/17            15240                  15280                  15220                  15220 2002/12/18            15250                  15250                  15210                  15210 2002/12/19            15220 15310 15220 15310                   . . .                    といった感じに一気にマクロで処理してしまいたいのです。DATAはかなりの行数あり、すべて3行の間隔があります。日付の横に4つの数値が規則的に並んでいるというものです。何回でもマクロボタン一発で4つの横に並んだ数値のみを縦に並べた4つの数値にしたいのです。つたない説明で大変申し訳ありませんが、どなたかわかる方お教えくださいませ。

  • VBA

    エクセルVBAについて教えてください。 シート1 A列   B列   C列   D列   E列    F列 ・・・            商品A  商品B  商品C  商品D・・・ 日付  名前(1)   3           2     1 日付  名前(2)         1     3  ・     ・     ・     ・     ・    ・  ・     ・     ・     ・     ・    ・  ・     ・     ・     ・     ・    ・ シート2 A列   B列    C列    D列    E列 日付  名前(1)   商品A   3               商品C    2               商品D    1 日付  名前(2)   商品B    1               商品C    3 ・      ・      ・      ・  ・      ・      ・      ・ ・      ・      ・      ・      上記のような、エクセルで作ったシート1があります。 これを、シート2のようにコピーしたいと思っています。 商品は20列あり、数字が入っている列と入っていない列があります。 数字が入っている列の商品と数字をコピーして、すべてコピーが 終わったら次の行のコピーしていく。 行は100ほどあります。 よろしくお願いします。

  • 最終行に合計(最終行が列によって異なる場合)

    エクセルVBAに於いて質問させて頂きます。 タイトルにも書かせていただきましたが、 A列に行数可変のデータ(文字列)があり、 B列に行数可変のデータ(数字)があり、 A列の行数>=B列の行数の条件とき、 A列の最終行+2の位置のA列に文字で合計 A列の最終行+2の位置のB列にsumを表示する場合、 どのようにすれば出来ますでしょうか。 A列の最終行+2の位置のA列に文字で合計は With Range("A3") .End(xlDown).Offset(2, 0).Formula = "合計" End With でいけると思うのですが、 A列の最終行+2の位置のB列にsumを表示する場合どのようにすればいいのかわかりません。 ご教授のほどお願い致します。

専門家に質問してみよう