• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2003の集計および印刷について)

Excel2003の集計および印刷について

fumufumu_2006の回答

回答No.1

こんなのでどうでしょう? 元データを壊さないように作業シートを使います。 必要に応じてss,ds,wsのシートの指定を変えてください。 印刷シートのデータ行数をpageRowCountで調整してください。 pageColCountでページあたりの横数が変更できます。 Private Sub CommandButton1_Click() Const pageRowCount = 50 '1ページあたりのデータ行数 Const pageColCount = 2 '1ページあたりのデータ列数 Dim ss As Worksheet '元データシート Dim ds As Worksheet '印刷シート Dim ws As Worksheet '作業シート Dim rowCount As Long '元データの行数 Dim startRow As Long '印刷ページ毎の印刷する元データの最初の行 Dim srcRow As Long '印刷時の元データの行 Dim row As Integer '印刷データのデータ部の行 Dim col As Integer '印刷データのデータ部の列 Dim rowOffset As Long Set ss = Sheets("Sheet1") '元データシートの指定 Set ds = Sheets("Sheet2") '印刷シートの指定 Set ws = Sheets("Sheet3") '作業シートの指定 rowCount = ss.Cells(ss.Rows.Count, 1).End(xlUp).row '元データの行数取得 ws.Cells.Clear '作業シートクリア ss.Columns("A:B").Copy Destination:=ws.Range("A1") 'データを作業シートへ ws.Columns("A:B").Sort Key1:=ws.Range("A1"), Order1:=xlDescending 'sort ds.Cells.Clear '印刷シートクリア '印刷シート作成 For startRow = 1 To rowCount Step pageRowCount * pageColCount 'ヘッダー部 ss.Range("C1:F2").Copy Destination:=ds.Cells(rowOffset + 1, 1) 'ヘッダーデータ '他にも見出しなんかがある場合 ds.Cells(rowOffset + 4, 1) = "番号" ds.Cells(rowOffset + 4, 2) = "データ" ds.Cells(rowOffset + 4, 3) = "番号" ds.Cells(rowOffset + 4, 4) = "データ" rowOffset = rowOffset + 4 'ヘッダー部の行数だけプラス 'データ部 srcRow = startRow Do For col = 1 To pageColCount For row = 1 To pageRowCount If srcRow > rowCount Then Exit Do '元データ終わりチェック ds.Cells(row + rowOffset, col * 2 - 1) = ws.Cells(srcRow, 1) ds.Cells(row + rowOffset, col * 2) = ws.Cells(srcRow, 2) srcRow = srcRow + 1 Next Next Loop Until True rowOffset = rowOffset + pageRowCount 'フッター部 '必要があれば ds.Cells(rowOffset + 1, 1) = "何かフッター" 'いらなければ削除 rowOffset = rowOffset + 1 'フッター部の行数だけプラス(無ければ+0) Next End Sub

sako77
質問者

お礼

お礼が遅くなりまして申し訳ありません。 早速のご回答ありがとうございまた。 さっそく試してみましたが、希望通りに表示はされましたがよく見ると集計がされていませんでした。 例えば、 920  5 920  2 1000  6 上記の3行だけのデータの際は、 1000  6 920  7 と表示されるようにしたいのですが、もう一度お願いできないでしょうか?

関連するQ&A

  • 【Excel】マクロを使って、自動集計ができるようにしたいと思っています。

    こんにちは。 宜しくお願い致します。 アクセスがあったデータをピポッドテーブルでまとめ、さらに集計結果を出したいと思っています。 ピポッドテーブルを作成するまではマクロの自動記録でどうにかなったのですが、その後の集計結果のところでとまどっています。 <データの現状> ※ピポッドテーブルで出したデータは、1・2行目が空白、3~5行目に項目名が入っており、6行目からデータが入っています。何行までデータが入っているかはその月によって異なり、行の一番最後はA列に「総計」と入力されています。 ※A~C列は項目名(日付や商品名など)が入っています。 D列以降は合計などが入っており、ここで基準として使いたい項目はすべて4行目に入っています。 列の数は項目によって増減します。 項目の一番最後は「総計」です。 マクロで集計したいのは次の作業です。 (1)「Sheet1」を全コピー→「Sheet2」に形式を選択して貼り付け→値貼り付け (2)貼り付けたシートで、D列以降、4行目の項目が「集計1」「集計2」「詳細集計」「総計」以外のものも列を表示しないにする ※D列から始まって、「集計1」の前の列までを表示しないにするのと、「集計1」の次の列から「集計2」の前の列までを表示しないにしたい。 例えば、H列に「集計1」・L列に「集計2」が入力されている場合は「D~G列」「I~K列」を表示しないにしたい。 (3)詳細集計の列を1列選択し、列を1行挿入。挿入した列4行目のセルに「合計」と入力。 (4)挿入した列のところに、6行目以降、A列に「総計」と入っている行まで数字のデータが入っているところ(A列で「総計」と表示されている行まで)は、「集計1」と「集計2」のセルの合計をそれぞれ表示し、枠線を入れる。 (5)一番先頭に1列挿入し、6行目から元A列の「総計」と表示されている前までの通し番号を入れる。 (6)「総計」の次の列の4行目に、「ゼロ数」と入力し、5行目に(3)で挿入した列、A列に「総計」と入っている1行前までの範囲で「0」表示があるセル数を表示。 (7)ゼロ数と入力したの次の列の4行目に「ゼロ率」と入力し、先に出した「ゼロ数」を(5)で入力した通し番号の一番最後の数で割った数を表示。 (8)入力終えた後はA1のセルを選択。 以上になります。 長いですが、どなたか教えてください。 宜しくお願い致します。

  • EXCEL2007 集計方法を教えて下さい。

    EXCEL2007 集計方法を教えて下さい。 sheet1は、商品の出荷データが入っています。 A列・・得意先コード、B列・・品番、C列・・出荷数 sheet2で集計します。 A2以降に商品コードが入力してあります。 A1に得意先コードを入力すれば、sheet1のA列を参照し、該当得意先の商品出荷数をsheet2のC列に集計したいのです。 (sheet1のデータは羅列です。 例えば、山本屋のりんご購入履歴が1行目や10行目21行目と入力されているイメージです。

  • 月別の集計を印刷するには。

       A   B   C   ・・・   P 1  集計 2  集計  ・  集計 6  集計 7  データ ・ ・ ・ 1500 データ ・1~6行までは7から1000までの集計表になりますので、ヘッダーを利用してシート毎に印刷するように設定しています ・7から1000は枠のみで、毎月データを入力していきます 今回行いたいのは、1から6行をシート毎に印刷し、毎月のデータ(たとえば、11月分のみ)のみを印刷するようにするにはどうしたら、良いのですか

  • EXCEL2002で集計

    Sheet1に下記のようなシートがあります。 (セルA1)コードA (B1)コードB (C1)コードC (D1)店名 (E1)商品コード (F1)タイトル (G1)価格 (H1)注文数 (J1)備考 このSheet1に受注があるたび入力しています。 教えて欲しいのは、Sheet1にデータを入力する度に、Sheet2以降に該当する行だけを随時出力するにはどうしたらよいでしょうか? たとえば コードA「ABC商事」、商品コード「115-1」に該当する行だけをSheet2に出力したいのです。 Sheet3にはコードA「やまもとや」、商品コード「115-1」・・・のように。 宜しくお願いします。

  • Excel2003 データの集計

    お世話になります。 表題の件で 質問が御座います。 今、添付画像の左の表から 右の表に集計している所です。 ・セルA1の「田中さん/毛布」は1つのセルに入力されています。 ・金額は「数値」で入力されています。 ・名前と一緒に入力されている品名は何が入ってるか分かりません。(色々な物が想定されます) ・A列には おそらく 千数百人の方々がいらっしゃいます。 この左の表を元に右のように「その人の合計金額」を集計したいのですが 何か便利な方法はないでしょうか? 現状ではフィルタを掛け「田中さんを含む」で抽出し、別シートに「田中さん」と入力して その隣に「=SUM」で合計地道にを入れております。 まだ半分も終わってないようなので気が遠くなってまいりました。。。 1つのセルに2種類の情報が入っている為「=SUMIF」も使えません。。 どうにかして簡単に集計する方法は無いでしょうか? どこか別のセルに「大久保さん」とか入れたら その隣に「大久保さんを含むB列の合計が出る」ような? どなたか良いお知恵が御座いましたら宜しくお願い致します。 説明が不十分であれば補足致しますので何なりとお申し付けください。 何卒宜しくお願い致します。

  • Excelの集計マクロについて質問です

    Excelの集計マクロについて質問です 少々ややこしいのですが、情報を調べていても中々分からなかったのでアドバイスや解決策を頂けますと幸いです。 画像を添付いたしましたので参照しつつ見ていただけると助かります。 2行を一つの入力データとし、名称が4セルの構成になっており シートが集計用シートとデータ入力用シートというものになっています。 そして入力用シートをコピーして、入力内容を増やしていきます。 データ(集計用)にデータ(1)で入力されたものを、データ(集計用)のデータ(1)列に転記していき データ(2)で、データ(1)とかぶるものはデータ(2)列の同じ名称の行に データ(1)で発生しなかったデータがある場合後ろに追記していき、これがデータ(数値)が最小データ(1)、最大データ(40)のシートがある所まで集計していく形にしたいのです。 名称が4セルとなっているのは、1列目が同じ名称の物が来ることがあり、2列目にその細かい違いがでるので4セルとなっています。名称の中には、英文字の大文字と小文字だけの違いのものがあり、それを区別して集計することもあります。(物品Aと物品a) 簡単にできそうかな?と思っていたのですが、各シートを集計用シートの対応の列に転記する事や ないものをどんどん下へ追記していく、大文字と小文字を区別させるといういくつもの考え方が必要で調べても中々望む形を得られなかったので質問させていただきました。 少々複雑(?)かもしれませんが、なにとぞ宜しくお願い致します

  • 【Excel】この条件で集計を3つに分けたい…??(謎

     今、お小遣い帳のようなのを作っているのですが… 以下の条件で集計したい場合、D~F列に入れる式は、 どのようにすれば… というか、式で可能ですか?(謎 分からなくて困ってます。よろしくお願いいたします☆ ・1行目は項目名です。 ・2行目には前の月の繰越金を入力します。 ・A列で、文末に●があるものの集計はE列に出す。 ・A列で、文末に■があるものの集計はF列に出す。 ・A列で、●も■も無い項目の集計はD列に出す。 図にすると↓こんな感じです。※変になるかも;(>_<) ┌─┬──┬──┬──┬──┬──┬──┬ │  │ A │ B │ C │ D │ E │ F │ ├─╋━━┿━━┿━━┿━━┿━━┿━━┿ │1 ┃摘要│収入│支出│合計│●計│■計│ ├─╂──┼──┼──┼──┼──┼──┼ │2 ┃繰越│   │   │1000│1000│1000│ ├─╂──┼──┼──┼──┼──┼──┼ │3 ┃…●│1000│   │   │2000│   │ ├─╂──┼──┼──┼──┼──┼──┼ │4 ┃……│ 500│   │1500│   │   │ ├─╂──┼──┼──┼──┼──┼──┼ │5 ┃…■│   │ 500│   │   │ 500│ ├─╂──┼──┼──┼──┼──┼──┼ ちなみに、●と■には、それぞれ違う銀行名を入れる予定です。 ( つまり、お小遣いと同じシートで預金も管理したいかなーって。) お願いします☆  

  • 集計方法教えて下さい

    エクセルを使って集計したいので教えて下さい。 まず、シート”あ”のセルA1に9/1セルA2に9/2セルA3に9/3・・・・という風に日付が順番に延々入力されています。その隣の列( B,C,D・・・)にはその日使った金額が入っています。使った都度隣のセルに入力していきますので、ある日はB列だけ金額が入っている、またある日はB列から列Fまで金額が入っています。というように支払う毎に隣のセルに入力していきます。 集計シート”い”を用意して、そのシートのA1に9月、B1に10月、C1に11月・・・といったようにその月毎の集計金額を表示させたいのです。SUM関数を使って手動でセル範囲を選択しても良いのですが、なんとも芸の無い感じがするのでもっと簡単に出来ないでしょうか? 例えば、シート”あ”のA列全体を選択し、その中で9/1~9/30までの条件範囲でその隣にある金額を集計する。 あとは、その計算式の入っているセルの角をマウスでドラックしてビューとすれば、出来上がり。 わかる方教えて下さい。

  • エクセル(excel)の計算式(関数)について

    エクセル(excel)の計算式(関数)でよいアイディアがありましたら教えてください。 1行目は項目行です。 セルA1から右に15列=セルO1まで、 a | b | c | d | e | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 と入っています。 2行目からデータとして、 セルA2から右に5列=セルE2まで、 4 | 2 | 2 | 1 | 1 と入力したとします。(データ例(1)) あるいは、 セルA3から右にセルE3まで、 6 | 3 | 0 | 0 | 0 と入力したとします。(データ例(2)) 1つのデータの5個の数字のルールは2つで、 「合計で10以下である。」 「左から順に小さくなるか、同じ数字となる。」 です。 (目的は、) このとき、F列からO列にかけて、 データ例(1)のケースでは、 a | a | a | a | b | b | c | c | d | e データ例(2)のケースでは、 a | a | a | a | a | a | b | b | b | と表示されるように、 つまり、項目行の下にある数だけ、その列の1行目の記号を 1(F列)から右に向かって順に埋めていくような、 F列からO列までの2行目以下に入れる適当な計算式(関数)は ないでしょうか。 拙い説明で申し訳ありません。どなたかよい考えをお持ちの方がいらっしゃいましたらと存じます。 どうぞよろしくお願い致します。

  • エクセルの日にちごとのアンケート集計の関数について

    シート名(アンケート) A列:日付 (12/1 12/2 など) F列:分類 (電話 パソコン  など) シート名(合計) A13には 12/1と記入されており 13行は 12/1の分類の集計を入力致します。 14行は 12/2の分類の集計を入力致します。 その際、13行のE(E13)には12/1の 電話の集計     13行のF(F13)には12/1の パソコンの集計     14行のE(E14)には12/2の 電話の集計 を入力する場合、どのような関数を使えばよろしいのでしょうか。 よろしくお願いします。  アンケートと合計は 同じBOOKのエクセルの中にあります。 ご教示いただけますでしょうか。