- ベストアンサー
エクセルで○段ずつ集計する方法
pauNedの回答
こんにちは。 一例です。地道にやるという方針なら、それほど難しくはありません。 Dim ck As String '改ページチェック文字を格納する変数 Dim i As Long '行Loopカウント用 Dim n As Long '挿入行カウント用 With Sheets("Sheet2") 'Sheet2に対する処理 i = 2 'データが始まる行。(項目行以外) n = 3 '挿入行が最大3行なので。 ck = .Cells(i, 1).Value 'まずA2セルの値を最初のチェック文字とする。 Do i = i + 1 'A3セルから下にLoopしながら、セルの値がチェック文字と違うor3行ごとという条件で行挿入。 If (.Cells(i, 1).Value <> ck) Or (n = 1) Then .Rows(i).Resize(n).Insert '行挿入により、Loop中のセル行が変わったため、挿入した行数を加算。 i = i + n '1つ上の行に計算式を入れる。 With .Cells(i - 1, 1) .Value = "小計" .Offset(, 2).Resize(, 2).FormulaR1C1 = "=sum(r[-3]c:r[-1]c)" End With '挿入最大行数に再設定。 n = 3 '比較文字を再設定。 ck = .Cells(i, 1).Value Else '挿入条件に合わなかったら、A列セル値をクリア。 .Cells(i, 1).ClearContents '挿入行数をカウントダウン。 n = n - 1 End If Loop Until Len(ck) = 0 End With Sheet1からSheet2にデータをコピーした後に実行しなければなりません。 必要であればコピーするコードを自分で書き加えるなど、工夫してみてください。 A列をLoopしながらデータの切れ目をチェックし、行挿入と同時に数式をセットします。 自分でメンテナンスできないと意味がないので、 VBEの[ローカルウィンドウ]を表示させて、 変数の中味を確認しながら[F8]キーでワンステップずつ実行し、 コードの理解に努めてください。 データ量はどれくらいなのでしょうね。 何千件ともなれば、配列を使ったほうが効率が良いのですが、 とりあえず理解できるところから始めてみましょう。
関連するQ&A
- エクセル関数でグループ単位に集計を行う
エクセル初心者です。 入力伝票データを元に、集計シートに自動的に品名コード順の合計を作成したいのですが、うまくできません。 データシートのデータをソートせずに関数だけで出来る方法をお教えください。 ※エクセルはExcel2003を使用しています。 《データシート》例 [見出し] A1:年月日,B1:伝票番号,C1:品名コード,D1:数量,E1:単価,F1:金額 [データ] A2:2008/10/1,B2:Z-001,C2:S0001,D2:3,E2:1,000,F2:3,000 A3:2008/10/1,B3:Z-002,C3:S0002,D2:1,E3:2,000,F3:2,000 A4:2008/10/1,B4:Z-003,C4:S0003,D4:2,E4:3,000,F4:6,000 A5:2008/10/2,B5:Z-004,C5:S0002,D5:1,E5:2,000,F5:2,000 A6:2008/10/2,B6:Z-005,C6:S0001,D6:3,E6:1,000,F6:3,000 A7:2008/10/3,B7:Z-006,C7:S0003,D7:2,E7:3,000,F7:6,000 《集計シート》例 [見出し] A1:品名コード,B1:伝票数,C1:数量計,D1:合計金額 [集計値] A2:S0001,B2:2,C2:6,D2: 6,000 A3:S0002,B3:2,C3:2,D3: 4,000 A4:S0003,B4:2,C4:4,D4:12,000 ※品名コードは固定せず、データシートに入力されたものだけを集計したい
- 締切済み
- オフィス系ソフト
- エクセルで集計
エクセルで集計 シート1:A列に日付2000行程度、B列に品名A,B,C,D…500種類程度、C列にその内容。日毎に行は増えていきま、同じ品名が何度も登場してきます。 シート2:ここに新しくシート1の集計をして、同じ品名の多い順に並べ替えてリストを作成したいと思います。 シート1に新しく行が増えると同時にシート2の集計に反映させたいのですが、いい方法はありますか?
- ベストアンサー
- その他MS Office製品
- Excel集計方法を教えてください!
以下のようなシートがあります。 シート(1) A列、B列、C列、D列、E列 品名、商品名、A店、B店、C店 --------------------- 果物、いちご、8個、7個、6個 果物、ぶどう、2個、8個、2個 野菜、大根、3個、3個、2個 野菜、人参、2個、5個、8個 野菜、白菜、1個、2個、0個 肉、牛肉、2個、5個、10個 それを、以下のシート(2)のように集計するには、 シート(2)の各B列、C列、D列にどのような数式を埋めればいいか教えてください!! シート(2) A列、B列、C列、D列 品名、A店、B店、C店 --------------------- 果物、10個、15個、8個 野菜、5個、10個、10個 肉、2個、5個、10個
- ベストアンサー
- Windows XP
- アクセス クエリ・集計・計算方法について
アクセスの集計機能を使用して、品名毎の数量の合計と金額の合計を算出しようとしていますが、 思うようにできません。どなたか教えてください。 クエリのフィールドを左から・・・ (1)年月: Format([日付],"yyyy/mm")(集計:グループ化) (2)品名(集計:グループ化) (3)品名のカウント(集計機能:カウント) (4)単価(集計:グループ化) (5)金額: [単価]*[品名のカウント](集計:グループ化) このような形でクエリを実行していますが、すべての注文が1つだけなら問題ないのですが、実際には品名には数量が掛けられている場合もあり、現在設定しているクエリ設定では正しい数量の合計と金額の合計を出すことができません。どうか集計方法をご教授いただけないでしょうか。よろしくお願いします。 ■現在のテーブルの設計とリレーションを明記します。 【A】顧客テーブル (1)顧客ID (2)発注コード (3)氏名 【B】商品テーブル (1)商品ID (2)品名 (3)単価 【C】注文テーブル (1)注文ID (2)日付 (3)顧客ID 【D】注文明細テーブル (1)注文明細ID (2)注文ID (3)商品ID (4)数量 リレーション 【A】(1)-【C】(3) 【B】(1)-【D】(3) 【C】(1)-【D】(2)
- ベストアンサー
- オフィス系ソフト
- 集計方法を教えてください。
複数シートのデータを集計用に作成したシートにデータをコピーしたい。 シート1(支店A) 2008/03/31 ノート 100 2008/04/20 乾電池 200 シート2(支店B) 2007/10/31 乾電池 200 2008/01/06 鉛筆 100 シート3(集計表) (品名) (営業所)(数量) (日付) 乾電池 支店A 200 2008/04/20 支店B 200 2007/10/31 鉛筆 支店B 100 2008/01/06 ノート 支店A 100 2008/03/31 ※集計表には、品名と営業所名のみが記載されているため「数量」と「日付」のみをコピーしたい よろしくお願いします。
- 締切済み
- 財務・会計・経理
- SUBTOTAL関数の不思議
SUBTOTAL関数で期待する合計が出せません。 A列 B列 C列 D列 品名 数量 単価 金額 A 1 100 100 B 2 200 400 C 3 300 900 小計 0 →ここが期待どおりでない D2セルの式は =IF(A2="品名",SUBTOTAL(9,INDIRECT("D$2:D"&ROW()-1)),B2*C2) でD5までコピーしました。 つまりA列が"小計"でないときは数量×単価を、"小計"と入力されていたらD2:D4をSUBTOTALで集計するつもりなのに結果が0になってしまいます。 ちなみにD5に =SUBTOTAL(9,D2:D4) と手入力しても結果は0でしたが、D列に金額を直接入力すれば小計は正しく表示されます。 理由がおわかりの方、教えてくださいませんか
- ベストアンサー
- オフィス系ソフト
- エクセルにて伝票番号ごとに小計を出す方法
エクセル上に日付・伝票番号・品名・数量・単価・金額(=数量*単価)等が平打ちしてあるデータがあるのですが、それを伝票番号ごとに小計を出す関数はあるのでしょうか?
- ベストアンサー
- 会計ソフト
- 内訳書に明細書の小計を集計したい!
以下のような見積書を作ったとします。 Sheet1 (内訳書) (A) (B) (C) (1) 名称 内訳 金額 (2) ** ** ** (3) (4) (5) (6) : Sheet2 (明細書) (A) (B) (C) (D) (E) (1) 名称 内訳 数量 単価 金額 (2) 施工費 ** ** ** =IF(B2="","",B2*C2) (3) (4) (5) (6) : E3以下に =IF(A3="小計",SUM(D$2:D2)-SUMIF(A$2:A2,"小計",D$2:D2)*2,IF(B3="","",B3*C3)) これで明細書の小計は行を気にせずに出せるようになりました。 たとえばSheet2(明細書)のA2に施工費、B6に小計でE6に小計が出るとします。 これをSheet2(明細書)のA列の名称をSheet1(内訳書)のA2に、小計(上記の場合E6)をC3に・・・ という風に順次名称と小計を抽出するにはどうすればよいでしょうか? 分かりにくくてすいません。 どうぞ、宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセルで注文書→請求書を作っていて困っています。
下記のような注文書がSheet1にあります。 A列 B列 C列 D列 E列 品名 数量 単位 単価 小計 りんご 1 個 100 ¥100 みかん 0 個 30 ¥ 0 バナナ 2 本 100 ¥200 スイカ 2 個 200 ¥400 メロン 0 個 300 ¥ 0 合計 ¥700 上表のような顧客が数量を入力すれば小計が出るとこまでは出来ています。 Sheet2に注文のあった品目のみで請求書を生成したいのですが、 良い方法がありましたら教えていただけますでしょうか。 A列 B列 C列 D列 E列 品名 数量 単位 単価 小計 りんご 1 個 100 ¥100 バナナ 2 本 100 ¥200 スイカ 2 個 200 ¥400 合計 ¥700 ※要するに品名のラインナップがある中で0個のものは飛ばして 上図のような形に自動生成できるものが希望です。 色々な関数を試してみましたが、結果関数の意味も分からずやっているので、 なかなか思うようにできなくて困っています。 どうぞ、良い方法がありましたらご教示の程、よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- ExcelのVBAで集計をしたいです。
EXCELで、VBAを使用して元データのシートから、集計シートを作成したいです。 Sheet1 A B C D E F 1 品名 サイズ1 サイズ2 サイズ3 元のサイズ 売り上げた量 2 A 1 100 150 200 1000 50 3 B 2 100 200 100 1500 10 4 A 2 200 300 500 2000 100 5 A 1 150 150 100 1000 80 6 A 2 150 150 600 3000 100 Sheet2(集計用に新規作成されたシート:作成時は空シート) A B C D 1 品名 サイズ1 元のサイズ 売り上げた量の合計 2 A 1 1000 130 3 B 2 1500 10 4 A 2 2000 100 5 A 2 3000 100 元のサイズのものがどれだけ使用されて売れたのかを集計しようとしています。 ちなみにサイズ1は変更されません。 条件が複数個になるので、Sheet2の合計は、SUMPRODUCTを使用することになると思うのですが、 C列までの、品名、サイズ1、元サイズが重複しないように抽出するためには、 どのようにしたらよいのでしょうか?
- ベストアンサー
- オフィス系ソフト