Excelの小計機能をVBAで実行する方法

このQ&Aのポイント
  • Excelの小計機能をVBAで実行する方法についてご質問いただきました。質問者様は、「取引日」別に金額の小計を出したいとのことですが、VBAでSubtotalを使うと日付の表示形式が正しくされない問題が発生しています。
  • VBAコードの一部として、並び替え後に「Selection.Subtotal GroupBy:=3, Function:=xlSum, TotalList:=Array(10), SummaryBelowData:=True」を実行していますが、日付が「25/7/2011 集計」と表示されることに困っているようです。
  • 解決策としては、VBAの実行前に日付の表示形式を指定する必要があります。具体的には、Format関数を使用して日付のフォーマットを「yyyy/mm/dd」に設定することで、「2011/7/25 集計」という形式で表示されるようになります。このようにすることで、正しい日付の表示が行われるようになるでしょう。
回答を見る
  • ベストアンサー

Excelの小計機能をVBAでやりたいです。

Excelの小計機能をVBAでやりたいのですが、うまくいきません。 3列目に「取引日」があり、 10列目に「金額」があり、 「取引日」別に金額の小計を出したいのですが、 手動で、データ→小計をやると、日付が「2011/7/25 集計」とうまくいくのですが、 VBAで、Subtotalをやると、日付が「25/7/2011 集計」となってしまいます。 VBAの一部ですが、 並び替え後 Selection.Subtotal GroupBy:=3, Function:=xlSum, TotalList:=Array(10), SummaryBelowData:=True を実行させています。 取引日も全て「2011/7/25」などの形式で入力されています。 VBAで、「25/7/2011 集計」を「2011/7/25 集計」と指示するにはどうしたらよいでしょうか。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

日付のセルの表示形式はどうなっていますか? もし、「*2011/7/25」のように「*」が付いているなら、「*」が付いていない形式を指定してからマクロを実行してみてください。

tainosuke
質問者

お礼

ご回答いただいた内容で解決しました。 とても助かりました! 本当にありがとうございます。

関連するQ&A

  • エクセル VBA 集計方法

    各シート毎に下記の内容にて集計をしたいのですが、A2のセルにデータがない場合集計をしない方法がわからないのでご存じの方宜しくお願い致します。 Sheets("Sheet1").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Sheets("Sheet2").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Sheets("Sheet3").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True End Sub

  • Ecel マクロでsubtotal関数を使ったとき

    データ>集計、で行った集計を記録マクロで記録したとこと下記のようになりました。 Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True 1列目は日付が8桁で「yyyy/mm/dd」の形式で表示されています。 データ>集計、で行うと実行後に表示される小計の日付は「yyyy/mm/dd 計」と表示されますが、この記録したマクロを実行すると「mm/dd/yyyy 計」となってしまいます。 Excel2000、2002とも同じ結果になってしまいます。 OSはwindows2000です。 どうしてこうなってしまうのか、ご存知の方いらっしゃいましたら教えて下さい。

  • VBA SubTotalで集計を出そうとしても、同じ内容なのに分かれてしまう

    お世話になります。 VBAにて、シート内の範囲から、指定した列を元に、集計しようとしています。 ここまでは、何の変哲もない、集計を求めるだけのことなのですが、 集計の結果を見てみると、同じ項目なのに、別に集計されています。 たとえば、(1604)というデータで集計を取ると、シートの中に 『1604 計』という集計結果が二つ以上できてしまうのです。 どうして、一つに集計されて出てこないのでしょうか。 ソース部分は、こんな感じです。   rngList.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3), _   Replace:=True, PageBreaks:=False, SummaryBelowData:=True 原因と対策をお教えください。 よろしくお願い致します。

  • エクセルのマクロ実行→オブジェクトがはみでるエラーについて

    エクセルでマクロを作り、実行したのですが、データを集計し「2」で集約する部分で「オブジェクトからはみでます」というエラーがでます。原因がわかりません。正しく実行できる方法を教えてください。 Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3, 4, 5, 6, _ 7, 8, 10, 13), Replace:=True, PageBreaks:=False, SummaryBelowData:=False Range("D2").Select   ↓この部分でエラーになります。 ActiveSheet.Outline.ShowLevels RowLevels:=2 Range("A2").Select Selection.Insert Shift:=xlDown Range("P2:R2").Select Selection.Insert Shift:=xlDown Range("B1").Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy

  • エクセルで小計を出したいのですが

    エクセルに関しての質問です。 A列には日付、B列には金額が入ります。 A列の日付は単独で表示される事もあり、また同じ日付が複数行に渡って表示される事もあります。 B列の金額は、それぞれの日付に対し違った金額が1つずつ入ります。 そこで、同じ日付の金額小計を同日付の最終行C列に表示したいのですが、どうしたら良いでしょうか? できればエクセルに入っている関数だけで解決したいのですが、できないでしょうか? または簡単なコードの記述で解決できないでしょうか? 宜しくお願いします。

  • エクセルマクロでピボットと集計

    エクセルのマクロを使ってピボットと集計を行いたいのですが、データは毎日更新するため行は変わります。 1.ピポットの範囲で一番下の行にデータの合計行が残ってしまうため、その行を削除したい。(=左端から右下を選択したい 余分な集計の行はG列で最終データはH列です)  2.ピボットで作成したものを普通のワークシートに全部値貼り付けした後、集計を行いたい。  A B C D E F G H (列はHまでで常に固定) G列に数値、H列に日付 ピボットの範囲と集計の範囲が都度変わっています。 自動で作成したものを手直ししたいのですが途中箇所のマクロを抜粋しました。 マクロは初心者です。 説明不足もあるかもしれませんがどうぞ宜しくお願いいたします。  ピボットの範囲選択のあたり・・・ ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R1236C8").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) 集計のあたり・・? Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(5, 6, 7, 8, _ 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41 _ , 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, _ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88), Replace:= _ True, PageBreaks:=False, SummaryBelowData:=True Range("B6").Select Selection.AutoFilter Field:=2, Criteria1:="=*集計*", Operator:=xlAnd Rows("6:900").Select With Selection.Interior .ColorIndex = 34 .Pattern = xlSolid

  • 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の間に太線を引いて施設ごとの区切りがわかるようにしたいです。。 繰り返し作業ばかりで大変です。 どなたか知恵をお貸しください。

  • ExcelVBAで次のコードを説明して欲しい

    教えてください。下の表があります。 コード 数量 327 3 327 2 332 5 332 8 332 9 336 5 336 6 標準モジュールに次のようにコードが書いてあります。 Sub コード別集計とグループ化() Dim d As Long Dim s As String d = Cells(1, 1).CurrentRegion.Rows.Count s = "a1:b" & d Range(s).Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2) End Sub 他人が作ったものです。動作は支障ありません。VBAを勉強中なのですが、なぜ、このように記述するのか分かりません。できるだけ詳しく解説していただけないでしょうか。 特に分からないのが s = から始まるところと、Range(s).~のところです。賢者の皆様よろしくお願いします。

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • Excelのアウトラインの設定ができません

    Excel2007でマクロ作成中の初心者です。 次のような表があります。 A列 B列  C列  D列  E列  F列 1   6/20 太郎  赤組   5円  20円 2   6/20 次郎  赤組   6円  30円 3   7/20 三郎  白組   8円  40円 4 以下省略 これを以下のコードで修正できました。 Sub アウトライン設定() Sheets("ソート").Select Range("C3").Select Selection.Subtotal GroupBy:=3, Function:=xlSum, TotalList:=Array(5, 6), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True ActiveSheet.Outline.ShowLevels RowLevels:=2 End Sub アウトライン2で表示すると A列 B列  C列    D列  E列  F列 空欄 空欄  太郎集計  空欄   20円  120円 空欄 空欄  次郎集計  空欄   30円  300円 空欄 空欄  三郎集計  空欄   60円  400円  以下省略 これを以下の表示になるよう修正したいのですが どうコードを変えたらよろしいでしょうか。よろしくお願いします。 アウトライン2で表示すると A列 B列  C列    D列  E列  F列 空欄 空欄  太郎集計  赤組   20円  120円 空欄 空欄  次郎集計  赤組   30円  300円              赤組集計 50円  420円 空欄 空欄  三郎集計  白組   60円  400円 空欄 空欄  花子集計  白組   80円  400円  以下省略             白組集計  500円 1200円 以下省略  

専門家に質問してみよう