• ベストアンサー

集計したファイルを分割したい

あるエクセルファイルに集計を加え、集計した結果をファイル内のある列の値で別ファイルに分割したい場合どの様なvbeを書けばよろしいでしょうか? サンプルファイルでいいますと、集計はN列の伝票番号を基準にL列:原価計 M列:売価計をそれぞれ合計額を集計し、その集計結果を元にG列:店舗の値(1~15)でファイルを分割保存する事が目的です。 ちなみに行数は毎回変わります。(1500行前後になります。) 毎月月末にこの作業をしますが、非常に限られた時間でスピーディに完了しなくてはならず手作業ですとミスが起こり困っております。 どなたかご教示願います。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (719/1486)
回答No.4

すみません、間違いました。   RowT = [N1].End(xlDown).Row   Range("A1:N" & RowT).Subtotal GroupBy:=14, Function:=xlSum, TotalList:=Array(12, 13) _     , Replace:=True, PageBreaks:=False, SummaryBelowData:=True を入れて下さい。

gxtsf295
質問者

お礼

目指していた形になりました。 助かりました。 何度もありがとうございました。

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

その他の回答 (3)

  • SI299792
  • ベストアンサー率48% (719/1486)
回答No.3

サンプルデータは、アウトラインの小計機能を使って、伝票番号別で原価計 売価計の合計額の計算がありました。この状態で動かせば、出力ファイルに小計が出力されるはずです。 てっきりこの状態で動かすものと思っていました。この状態で動かすことを前提に作ったので、集計をせずに動かせば、最後の店舗が出力されないという障害が発生します。 もし、いちいち小計を付けるのが面倒なら、プログラムの最初(Dim の下)に   [A:N].Subtotal GroupBy:=14, Function:=xlSum, TotalList:=Array(12, 13) _     , Replace:=True, PageBreaks:=False, SummaryBelowData:=True を入れて下さい。 終了後に、小計が削除された状態になっていてほしいのなら、プログラムの最後(End Sub の上)に   [A:N].RemoveSubtotal を入れて下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

仕事のことを、無料の質問コーナーに丸投げしているので、答える気がしなかった。 また内容も核心部分は、簡単ではないか、と思った。 ーー 方法は2つぐらい思い付く。 (1)支店番号でフィルターして、抽出されたデータをコピーして(可視セルだけを)他ブックの他シートに貼り付ける。 その作業をVBAで支店分だけ繰り返す。 (2)コピーする範囲の行的な、From-Toについて 番号の変化した行の1行前までをコピーして他ブックの他シートに 貼り付け 上の行から支店番号の変化を判別の処理していって、スタート行(From)は初めが第2行から、終わり(To)は支店番号の変わった行の直前の行。次のスタートは変わった行からという風にコピーする範囲を繰り返す。 #1の回答はたぶんこの方式かな? 集計部分は、分断後新たに算出すべきかもしれない。 ーー >vbeを書けばよろしいでしょうか VBEはエディターのことで、VBAのコードというべき。 このそれを混用するレベルでは、本件は(VBAで処理することが必須かと思うが)、VBAでは無理かと。丸投げか。 ーー 質問の表を見ると、しっかりとした表を作っている。専門業者かシステム担当が作ったのか。専門家がいるのでは。その人に頼むべき。 各支店に渡すとして、紙でなくて、メイル通信かUSB発送か。 USBに分ける場合などは、取り外しなど、VBAの経験が必要のような気がする。

全文を見る
すると、全ての回答が全文表示されます。
  • SI299792
  • ベストアンサー率48% (719/1486)
回答No.1

回答が付きませんね。 出力ファイルはどのような形式なのか・どこに出力するのかといった、必要な情報が無いからです。 私も上記の理由で答えなかったのですが、なかなか回答が付かないので、とりあえず作ったものを載せます。 ファイル形式は、入力ファイルと同じとしました。 出力先は、このファイルの入っていたフォルダ、ファイル名は店舗名としました。 最後に必ず「総計」があるものとしました。 ' Option Explicit ' Sub Macro1() '   Dim Denpyo As String   Dim OldKey As String   Dim NowKey As String   Dim NewKey As String   Dim RowF As Long   Dim RowT As Long '   Workbooks.Add   Application.ScreenUpdating = False   ThisWorkbook.ActiveSheet.[A1:N1].Copy [A1]   With ThisWorkbook.ActiveSheet   Denpyo = " "   RowF = 2   RowT = 2 '   Do While Denpyo > ""     NewKey = .Cells(RowT, "G") '     If NewKey > "" Then       NowKey = NewKey     End If '     If OldKey > "" And OldKey <> NowKey Or Denpyo = "総計" Then       [A2:XFD1048576].Clear       .Range("A" & RowF & ":N" & RowT - 1).Copy [A2]       Application.DisplayAlerts = False       ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & OldKey       Application.DisplayAlerts = True       RowF = RowT     End If '     OldKey = NowKey     RowT = RowT + 1     Denpyo = .Cells(RowT, "N")     DoEvents   Loop   End With   ActiveWorkbook.Close End Sub 多分変更点があると思うのでお書きください。

gxtsf295
質問者

補足

質問内容が至らなくて申し訳ございません。 追加しますと以下の条件があります。 (1)出力するファイルは原本と同じxlsx形式です。 (2)出力する場所は、原本と同じフォルダ内です。 (3)集計(合計)する箇所は、N列の伝票番号別でL:原価計 M:売価計の合計額の計算が必要です。(出力した店舗ファイルに伝票番号ごとの原価計、売価計の合計額の集計がある形にしたいです。) よろしくお願い致します。 よろしくお願い致します。

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

関連するQ&A

  • CSVファイルを複数のファイルに分割する方法

    CSVファイルの最初の数行を飛ばして、同じ行数ずつ分割して1.csv、2.csv・・・という風に分けたいのですが、行数が膨大で手作業でするにも時間がどのくらいかかるのか分かりません。どなたか簡単な方法を教えてください。

  • エクセル 異なる範囲の集計(合計)

    誰かアドバイスをお願いします。 エクセルで下記の様な異なる行数(範囲)を自動集計させたい場合はどうすればよろしいでしょうか?       A      B      C     D        E      日付    注文NO  金額   注文金額計  日別注文金額合計 1   5月1日     1     50     150       250 2                  50       3                  50                4             2    50     100 5                  50                    6   5月2日     3     50     50        150 7             4     50    100 8                   50                                            やりたい事は、D列へ注文金額計に注文NO別の合計金額を集計させる事(注文NOごとの一番上の行のみです。)  と E列へ日別の注文金額合計を集計させる事です。(日別の一番上の行のみに表示)   sumif関数を使えばうまく行きそうなのですが、問題が2つあります。 (1)集計条件の日付や注文NOは、重複している場合は、一行のみ表示の仕様です。(他ファイルからデータを貼りける為、その様な仕様になり、極力入力する事は避けたいです。) (2)合計範囲の行数が一定ではないので出来ればEやD列の全てのセルに関数なりを設置し、一番最上行のみに結果を表字したい。例えばsumif関数をE,D列全ての行に設定してしまうと同じ集計結果が何行にも渡って表示されてしまうのは避けたい。(上の例でいえばE列に150が何行も表示されてしまう。 かといって重複行の最上行のみに関数を設定するのは、一行ずつの作業になってしまう為、避けたい。 何かいい方法がないでしょうか?   個人的には、関数の方がやりやすいのでいいのですが、マクロやVBEでもあれば教えて頂けますでしょうか?

  • excel vbaでVlookup的な集計したい

    お世話になります。 デスクトップに[集計]というフォルダ作って、その中に[集計.xls]というファイルがあります(画像参照) さらに[個別]というファイルダ内に[実績A.xls]というファイルがあります。 実際には実績B.xls、実績C.xlsと複数ファイルが存在します。 集計.xlsにボタンを作ってクリックすると下記のような動きを実現したいのです。 [個別]フォルダ内の実績A.xlsファイルを開いて[集計.xls]のA列(支店名)、B列(商品番号)と合致したデータを次のように挿入していきたいのです。 集計.xls  実績A.xls C列  ← D列の値 D列  ← E列の値 E列  ← F列の値 F列  ← G列の値 この作業を実績A.xlsファイルの全シートに対して実施したいのです。(マスターというシートは抜かして左から右へ)。全シートREADし終わったら閉じて次の実績B.xlsファイルを開いて、また同じ作業を繰り返し、[集計.xls]もA2のデータから再びREAD、という動きです。 わかりにくい説明で大変恐縮ですが、業務で求められ困っております・・ どなたかご教授いただけますでしょうか。 何卒よろしくお願い致します。 Excel2013 Windows7

  • EXCELの集計で困っています。

    こんにちは。 どなたかお知恵を拝借できませんでしょうか。 EXCEL2003 SP3 の集計で悩んでおります。 列 A) 商品区分 B) 大分類 C) 小分類 D) 品番 E) サイズ F) 仕入年度 G) 商品名 H) 商品カラー I) 店舗 J) 価格 K) 特別価格 L) 在庫点数 M) 在庫金額 N) 原価 O) 販売開始年度 というファイルがあります。 これを、D)品番とF)仕入年度の単位で在庫点数と在庫金額を集計し、 かつ、集計行にE)サイズとI)店舗を除く、その他全ての列項目の値を表示させたいのです。 (つまり、集計データの1行上の値を持ってくればOK。) これをメニューから行おうとしたのですが、集計項目は1つしかなく・・。 おそらくVBAを用いなければ無理だと思うのですが、 お恥ずかしい話、VBAの知識を持ち合わせておりません。 参考までに、データは約1万件あります。 また、データの並びは大分類>小分類>品番>サイズ>仕入年度で ソートされており、このままの集計ですと、品番・サイズ・仕入年度での 集計となってしまいますので、サイズを除いた 大分類>小分類>品番>仕入年度、への再ソートが必要かと思われます。 お手数をお掛けいたしますが、なにとぞよろしくお願いいたします。

  • [ExcelVBA]ファイル間集計についてです.

    こんにちは. ExcelVBA初心者の者です. book1.xlsm book2.xlsm book3.xlsmのように三つのマクロファイルが共有フォルダ内に存在するとします. 各マクロファイルの中身は同じで,Sheet1のA列に文字が入っており,B列C列に数字が入っています. 同じく,Sheet2にもA列に文字が入っており,B列C列に数字が入っています. book1,book2,book3各マクロファイルに誰かが毎日入力を行うのですが,Sheet1はAさんが入力を行い,Sheet2はBさんが入力を行うように決まっています.(Sheet1はAさんが入力担当Sheet2はBさんが入力担当) このとき,book4.xlsmというマクロファイルを別に用意し,このマクロファイルのユーザーフォーム1のCommandBotton1を押すだけで,各ファイル(book1,book2,book3)の値をSheet毎に集計(値をbook4に持ってくる)したいのです. 集計を行う際に,2回目以降にボタンを押した際には,前回集計された続きから集計をしたいで す. しかし,マクロは初心者のため,どなたかご教授頂けると助かります.よろしくお願いします.

  • 簡単な損益表の作り方について

    最近勤務し始めて会社で、損益表をつけてくれと頼まれたのですが、これまでは手書きで表を作っていたようです。 毎日たくさんの伝票があがってきて、毎日の集計を出して最終的に月間の損益を出すのですが、問題は月末に月初の伝票があがってくるということが普通に起きるので、結局月末にまた電卓を叩いて・・・という作業になるのです。そこで、エクセルで入力しておいて、月末の作業を簡単に出来ないものか・・・と思うのですが。 毎日、売上・仕入・原価ともに合計を出して、売上合計-(仕入合計+原価合計)=その日の損益、そして月末に損益累計を出します。 伝票の枚数もバラバラ、ない日もあります。 どのように関数を組み込めばよいでしょうか。 また、最終的には1日ごとの合計しか必要ないので、ピボットテーブルというものでまとめるのがいいのでしょうか。 エクセルがあまりわからないので、どうかよろしくお願いいたします。

  • excelでの集計結果の表示について

    excelで一覧を作成し、一番右横に集計結果を表示できるようにしております。 一覧の内容は、縦に店舗名、横に各作業名で、表には各作業が「順調」「遅延」「完了」かを記載しております。 一番右横の集計結果には各作業が「順調」「遅延」「完了」がそれぞれ何件あるかをカウントしております。    店舗A    店舗B    店舗C     順調  遅延  完了     |ステータス ステータス ステータス ___________________________________ 作業1|順調    遅延     遅延    | 1    2   0 _______________________________________________________ 作業2|順調  順調  遅延  | 2    1   0 _________________________________________ 作業3|順調  順調  完了  | 2    0   1 _______________________________________________________ 「順調」「遅延」「完了」のカウントは以下のように取っております。 =COUNTIFS($AB$4:$HW$4,"ステータス",AB28:HW28,"順調") それぞれの集計結果数値をクリックするなり、ポインタを持っていくなりしたら、 順調なり遅延なりの対象店舗名を表示するようにしたいのです。 例:作業1の集計結果の遅延2の箇所をクリックしたら、店舗B、Cと表示される。 どうしたらよいでしょうか?

  • Excelで、出勤人数の集計方法は?

     現在、私の手元に工場の作業日報のデーターベースがあります。  いつ、誰が、どんな作業を、何時から、何時まで行っていたかというデーターが約半年分、行数にして1万5千行ほどあります。    このデーターベースから、日付毎の出勤人数を集計したいのですが、集計やピポットテーブルを使用しても上手く往きません。  A列に日付、B列に作業者名、C列以降に作業名や時間が入力されているのですが、一人が一日に複数の作業を行った場合、同じ日付に同じ作業者名が幾つもダブって入力されています。  集計やピポットテーブルを使用しても、例えば同じ日付に同じ作業者名が3回登場すると、1とカウントせず、3とカウントしてしまいます。  このように、データーの個数を集計するのではなく、データーが何種類有るかを集計する方法は無いのでしょうか。詳しい方、どうかご教授下さい。  では。

  • Excelで特定の数値が入った行の別列の数値を集計

    ExcelのA列にそれぞれ空白 or 1、2、3いずれかの値が入っています。 B列には行ごとに異なる数値(1、2、3、4)が入っています。 A列とB列の行数は同じです。 それぞれの数値を下記の通りにまとめたいと考えています。 ・A列に「1」が入っている行のB列の数値を集計し、その数をA100に入れる ・A列に「2」が入っている行のB列の数値を集計し、その数に1.5を掛けた値をA101に入れる ・A列に「3」が入っている行のB列の数値を集計し、その数に2を掛けた値をA102に入れる 上記はどのような計算式で実現できるでしょうか? よろしくお願いします。

  • Excelファイルをマクロでファイルに分割したい

    資産管理のため、次のような作業を行いたいのですが、 勉強が足りず困っております。 あまえた質問で申し訳ないのですが、どうぞお知恵を貸してください。 下のようなExcelファイル(約3000行15列のもの)を 場所 資産番号 資産の種類 使用者 購入日・・・ 本社 123456 AA 東京太郎 2001/4/4 大阪 123457 BB 大阪花子 2003/1/10 福岡 123458 AA 福岡一郎 2005/3/10 京都 123459 CC 京都次郎 2006/8/1        場所ごとに分割して「場所」名のファイルを作成したいと思い、 過去の記事を探して、ここへたどり着きました。 http://okwave.jp/qa/q4361389.html 早速、mitarashiさんのマクロを使用し、ファイルの分割はできたのですが、 3列目までしか記載されておらず(これは当然のことだと思うのですが) どこを変えればいいか、試行錯誤したのですがエラーになってしまいます。 残りの列の値も出力させるには、どうしたらよいでしょうか。

専門家に質問してみよう