• 締切済み

集計表を作成するマクロについて

「1日」のシート   A    B    C    D     E 1 車両番号 出発場所 到着場所 商品コード 数量 2 1    東京   大阪   L     10 3 2    北海道  東京   M      5 4 3    東京   北海道  L     17  5 4    福岡   東京   N      8 「2日」のシート   A    B    C    D     E 1 車両番号 出発場所 到着場所 商品コード 数量 2 1    大阪   東京   K      8 3 2    東京   愛知   L      7 4 3    福岡   大阪   N     17  5 4    北海道  千葉   N     13 上記のように「車両番号」「出発場所」「到着場所」「商品コード」「数量」の情報が入ったシートが日別に1枚ずつあり、月間で28~31枚が1つのファイルに入っています。 このファイルで、新しいシートを追加して、日別の車両情報の一覧を作成したいのですが、どのようにしたらよいのか教えていただけませんか? 以下の条件で作成したいと思います。 1.「A1」から「E1」を新しいシートの「A1」から「E1」に貼り付ける。 2.シートの「車両番号」に数字が入っている行をそのままコピーして、新しいシートに貼り付けていく。その際に、コピー元のシート番号が入ればありがたい。(無くても可) 3.日別の車両情報をスペースは開けずに下に続けて貼り付けていく。 4.月ごとに日数が異なるので、車両情報が投入されているシートのみを貼り付ける対象としたい。 以上です。 次のように表示されるようになると嬉しいです。   A    B    C    D     E  F 1 車両番号 出発場所 到着場所 商品コード 数量 参照シート名 2 1    東京   大阪   L     10 1日 3 2    北海道  東京   M      5 1日 4 3    東京   北海道  L     17 1日 5 4    福岡   東京   N      8 1日 6 1    大阪   東京   K      8 2日 7 2    東京   愛知   L      7 2日 8 3    福岡   大阪   N     17 2日 9 4    北海道  千葉   N     13 2日 これが出来れば、手で「コピー・貼り付け」をしていくよりも入力ミスが少なくなりそうです。 よろしくお願いします。

みんなの回答

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

やりたいことがきちんと整理されているので、あとはその通りにやれば良いだけですよ。 自分ではどこまでできて、どこが解らなくて困っているのかを、はっきりさせましょう。 たとえば、 1.「A1」から「E1」を新しいシートの「A1」から「E1」に貼り付ける。 なんていうのは、実際に手動でやってみて、それを「マクロの記録」すれば、コードは判ります。 このままだと、質問ではなく作成依頼になってしまいますよ。

donald1982
質問者

お礼

下記のようなコードを入力して、何とか作成することができました。 右端に「参照シート名」を入れるところで苦戦しています。 --------------------------------------------------------------- Sub 集計表() Dim newSh As String Dim Sh As Worksheet, myFlag As Boolean newSh = "集計表" myFlag = False For Each Sh In ThisWorkbook.Worksheets If Sh.Name = newSh Then myFlag = True '----全データシートのデータをクリアし、先頭へ移動します Worksheets(newSh).Cells.ClearContents Worksheets(newSh).Move before:=Sheets(1) Exit For End If Next Sh '----全データシートを先頭へ追加します If myFlag = False Then ActiveWorkbook.Worksheets.Add(before:=Worksheets(1)).Name = newSh End If Worksheets(2).Select Rows("1:1").Select Application.CutCopyMode = False Selection.Copy Sheets("集計表").Select ActiveSheet.Paste Dim i As Integer Dim lRow As Long, lCol As Long, lRow2 As Long Application.ScreenUpdating = False '----列見出しをコピーします Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1") For i = 2 To Worksheets.Count With Worksheets(i) lRow = .Cells(Rows.Count, 1).End(xlUp).Row lCol = .Cells(1, Columns.Count).End(xlToLeft).Column '----シートのデータが2行以上の場合にコピーします If lRow >= 2 Then lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1 .Activate .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1) End If End With Next i Worksheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.1

下記のURLを参考にしてみてください。

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_data_matome.html
donald1982
質問者

お礼

大変参考になりました。 コードがいろいろあり、それぞれのコードの半分も理解していませんが、何とか形になりました。 あとは、出来あがった集計表の右端に参照シート名を入れるだけです。

関連するQ&A

  • エクセルで2種類に該当する集計をとりたい!

    このサイトでは、いつもお世話になっています。 商品の入庫管理一覧表を作っています。 sheet1に入庫の入力画面として 1 A    B   C    D 2 日付   倉庫  品名   数量 3 1/2  東京  ○○○  300 4 1/15 大阪  **** 400 5 1/30 大阪  △△△  140 6 1/30 福岡  ###  250 7 1/31 東京  ◎◎◎  450          ・          ・          ・ と、入力していくとします(入力件数は1000を超えるかもしれません) そこで別Sheet2に入庫の照合画面として 『倉庫別かつ、品名別』の合計数量を「SUMIF関数」を使って横長の一覧表を作成しようと思っています。(他に方法が思いつかないので・・・) 「SUMIF関数」で『倉庫別かつ、品名別』の数式の作成が今ひとつ分かりません。 Sheet1の入力ものも後で入力があっているかどうか確認したい(フィルタをかけて、日別・倉庫別・品名別など)ので入力画面のSheet1の内容が別シートにコピーされても構いません。(マクロとかなのかな?分からないけれど・・・) 最初はSheet1の上記のように入力されたものはまったく同じように、倉庫別にSheet1の列に並ぶように『=A3,=A4・・・』などとし、そこからsheet2に品名別に「SUMIF関数」を作りました。 しかし、Sheet1が倉庫が10種類近くもある為、確認するときなどカーソルをたくさん移動させなくてはいけなく、見た目にもワークシートがきれいで無いので、もっとすっきりさせたいのです。 説明をどうしていいのか上手く分かりませんが、どうにかスッキリ出来ませんか? お願いします。

  • エクセル関数で時間を別の表に分ける

    いつもお世話になっております。 下記のことはエクセル関数で、どうしたらできるのか教えてください。 Sheet1    A    B    C      D  1 あああ 大阪  月・火・水 10:00-11:00 2 いいい 大阪  月     10:00-12:00 3 ううう  東京  火・水   11:00-12:00 4 えええ 福岡  水     11:00-12:00 5 おおお 福岡  木     15:00-16:00 シート1には【A】列に名前 【B】列には地名 【C】列には曜日、【D】列には時間が入っています。 シート1の表を参考にシート2は下記のような表をどう入力すればいいですか?    A          B         C         D         E         F         G   1  月        月         火           火          水        水          木  210:00-11:00 10:00-11:00  10:00-11:00   10:00-11:00  10:00-11:00   10:00-11:00    5:00-16:00 3 大阪                  大阪        東京        大阪       東京        福岡 4 あああ                 あああ        ううう      あああ      ううう      おおお 5 いいい 6 7 811:00-12:00 11:00-12:00  11:00-12:00   11:00-12:00    11:00-12:00   11:00-12:00 9 大阪                              東京         福岡      東京 10いいい                           ううう         えええ     ううう とっても見にくい参考で申し訳ございません。 よろしくお願いします。

  • エクセルで試合結果を入力し、各シート(チーム毎)にまとめ、データベースを自動作成する方法教えてください。

    例えば、Jリーグの全試合結果をシート1に入力します。 A列に日付、B列にホームチーム名、C列にアウェイチーム名、D列に得点(ホーム)E列に失点(ホーム)、F列に得点(アウェイ)、G列に失点(アウェイ)とします。 A    B    C   D  E  F  G 3月2日 東京  名古屋  2  1  1  2 3月2日 大阪  福岡   1  0  0  1 3月9日 福岡  東京   3  1  1  3 3月9日 名古屋 大阪 シート2には、チーム毎の結果、例えば東京とすると、東京との対戦相手の結果のみが抽出される。 A    B    C   D  E  F  G 3月2日 東京  名古屋  2  1  1  2 3月9日 福岡  東京   3  1  1  3 そして、シート3を大阪とすると、大阪との対戦相手の結果のみが抽出され表示される。 このような、シート1に試合結果を入力すると各シートに表(チーム毎の表)が自動作成される関数を教えてください。 さらに、欲を言えば、シート2を東京と限定するので、B列に対戦相手、C列に場所、D列に得点、E列に失点というように一挙にまとめた表ができる関数があるとよいのですが・・・ A    B    C    D  E  3月2日 名古屋  ホーム  2  1   3月9日 福岡   アウェイ 1   3   上記のようなデータベース作成は、エクセルで無理なのでしょうか? またエクセルのマクロだと出来るのでしょうか? よろしくお願いいたします。

  • マクロ

    【シート1】     A     B     C     D      E 1                          2月1日  2 ○○会社  3                     No.    201012 4  東京都       渋谷区 【シート2】      A       B      C      D      E 1   201012   2月1日   ○○会社   東京都  渋谷区 2   201014   3月14日  ▽▽会社  大阪府  大阪市 3   201015   2月26日  ■■会社  愛知県  名古屋市 4   201017   5月11日  ★★会社  滋賀県  大津市   シート1の「E1」「A2」「E3」「A4」「C4」セルに毎回違う文字を入力します。 このシート1の入力データをマクロでシート2へ蓄積していきたいのですが、 どのようなマクロを組めば良いですか?

  • Excel,VBA シートの自動作成、データ

    Sheet 1 に住所録 Sheet 2~50までに同じフォーマットで A  B  C~E F~H No. 名前 S~L S~L と並んでいてA4から名前 C~の列には各数量が50行ほど入力されています。 Sheet 2~50 までを名前ごとにまとめたSheet を自動で作成したいです。 Sheet1とSheet2~50の名前順は同じです。 例 Sheet51 シート名 Aさん    DEF列    SML 1行目1,2,3(Sheet2AさんのC~E数量) 2行目2,2,2(Sheet2AさんのF~G数量) 3行目2,2,2(Sheet3AさんのC~E数量) 4行目4,4,4(Sheet3AさんのF~G数量) 同じようにSheet 53 Bさん となるようにループする方法をご教授ください。 よろしくお願い致します。

  • エクセル2003マクロ:1日ごとに書き換えるシートの合計を1ヶ月集計の

    エクセル2003マクロ:1日ごとに書き換えるシートの合計を1ヶ月集計のシートにコピー、貼付けのようなことをすることを教えてください。 1日ごとに書き換えるシートと、1ヶ月集計するシートがあります。 1日ごとにデータをまとめて、そのデータを印刷し、そのデータの合計を1ヶ月単位で集計しているのですが、それをマクロにする方法が分かりません。 1日ごとに書き換えるシートはテンプレートになっていて、日付を書き換えて同じシートを使います。 そこで例えば、シート1(1日ごとに書き換えるシート)のA1:E1のデータを、シート2(1ヶ月単位で集計するシート)の1日なら1日の場所(例えばシート2のA1:E1)、2日なら2日の場所(例えばシート2のA2:E2)にコピー、貼付けのようなことはできるのでしょうか。 まとめてやるのではなく、1日ごとに日付の場所に。というようにしたいです。 分かりづらいかもしれませんが、よろしくお願いします。

  • Excelの料金表から料金を表示させる。

    下記に簡単な料金表をがありますが実際は世界中の都市を想定しています よろしくお願いします。 エクセルSheet料金表 ------------------------------------------ A B C D E 2 料金表 3 ハワイ パリ ロス 4 東京 20,000 25,000 28,000 5 名古屋 30,000 35,000 38,000 6 大阪 40,000 45,000 48,000 7 札幌 50,000 55,000 58,000 ------------------------------------------ 別々のシートにある料金表から計算書のG列?に料金を表示させる。 G1の料金から連続して簡単に表示させたい。 エクセルSheet計算書 A B C D E F G 1 出発地 東京 到着地 ハワイ 料金 ? 2 出発地 東京 到着地 パリ 料金 ? 3 出発地 名古屋 到着地 ハワイ 料金 ? 4 出発地 名古屋 到着地 ロス 料金 ? 5 出発地 大阪 到着地 ハワイ 料金 ? 6 出発地 大阪 到着地 パリ 料金 ? 7 出発地 札幌 到着地 ハワイ 料金 ? 8 出発地 札幌 到着地 ロス 料金 ?

  • マクロや関数で来店管理表を作成したい。

    最終来店日別・顧客番号順の管理表を作成したいと考えております。   表1・初日データ 行番号         列番号 G       列番号 H              顧客番号       最終来店日   6          100           2011-11-09   7           30           2011-11-09   8           500           2011-11-09   9           200           2011-11-09 10 ~   1000                                            表2・2日目データ 行番号         列番号 G       列番号 H              顧客番号       最終来店日   6          150            2011-11-10   7           500           2011-11-10   8           10            2011-11-10   9                  ~  1000                                            表3・来店日管理表 行番号 列番号 B  列番号 E     列番号 F        顧客番号  最終来店日    来店回数   6    10      2011-11-10    1   7    150          2011-11-10   1   8     500          2011-11-10   2   9     30    2011-11-09   1   10   100      2011-11-09      1   11    200     2011-11-09      1   12      ~  1000 ●〔表1〕・〔表2〕のデータから、〔表3〕のような〔来店日管理表〕の作成方法を教えてください。  1・初日 1・初日に〔表1〕のデータを〔表3〕に表示し、〔列番号 F〕に来店回数を〔1〕と表示する 2・〔最終来店日〕別・〔顧客番号順〕に表示する 3・〔表1〕のデータを消去する  2・2日目 1・〔表3〕のデータと〔表2〕のデータを統合して、初来店者は〔列番号 F〕に来店回数を           〔1〕と表示する          複数回来店者は、〔列番号 F〕に来店回数を〔前回回数+1〕して表示する 2・〔最終来店日〕別・〔顧客番号順〕に表示する 3・〔表1〕のデータを消去する 宜しくお願い致します。

  • EXCEL マクロ

    コード 住所 電話番号・・・・ 1_東京_03 1_大阪_06 1_静岡_054 2_愛知_052 2_岐阜_058 2_三重_059 シート名:コード1 コード 住所 電話番号 1_東京_03 1_大阪_06 1_静岡_054 コード 住所 電話番号 シート名:コード2 2_愛知_052 2_岐阜_058 2_三重_059 コードごとに行全体を新規シートに貼り付けはマクロで出来るでしょうか? 手作業では膨大な時間が掛かるため、出来ればと思います。

  • エクセルで同じ番号の振り方を教えて下さい。

    エクセルで同じ番号の振り方を教えて下さい。 1 北海道 2 東京 3 大阪 4 沖縄 という元のセルがあるとします。(番号と文字は別のセル) 別のシートに 沖縄      東京 北海道 というデータがあるとして、 これを 4 沖縄 2 東京 1 北海道 のように番号を振ることはできますか?

専門家に質問してみよう