エクセルマクロで複数の表をまとめる方法
- エクセルのマクロを使用して、複数の表を1つにまとめる方法について教えてください。
- 具体的な表の例として、みかん、りんご、バナナの表をマクロで1つの表にまとめたいです。
- 初心者向けに、マクロ内での解説を付けて教えていただけると助かります。
- ベストアンサー
エクセル のマクロで 複数の表を1つにまとめたい
エクセル のマクロで 複数の表を1つにまとめたい 下記のようなシートがあります。 Sheet1 A B C E F G I J K 1 日付 品名 数 日付 品名 数 日付 品名 数 2 1/1 みかん 100 1/2 りんご 50 1/1 バナナ 30 3 1/5 みかん 50 1/6 りんご 25 1/7 バナナ 20 4 1/10 みかん 30 1/11 りんご 15 1/10 バナナ 10 5 1/12 りんご 30 1/11 バナナ 10 6 1/13 りんご 50 みかん・りんご・バナナのそれぞれの表をマクロで下記のような1つの表ににまとめたいのですが どのようにしたら良いかご教授お願いいたします。 (初心者なので可能であればマクロ内で’コメント付きで解説いただけると助かります) M N O 1 日付 品名 数 2 1/1 みかん 100 3 1/1 バナナ 30 4 1/5 みかん 50 5 1/6 りんご 25 6 1/7 バナナ 20 7 1/10 みかん 30 8 1/10 バナナ 10 9 1/11 りんご 15 10 1/11 バナナ 10 11 1/12 りんご 30 12 1/13 りんご 50 うまく説明できないのでイメージ画像を添付いたします。
- mgjp7
- お礼率60% (18/30)
- オフィス系ソフト
- 回答数4
- ありがとう数3
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.2です! 各行の説明をご希望だということなので・・・ もう一度コードをコピー&ペーストします。 Sub test() '変数の宣言(長整数型) Dim i, j As Long '変数「i」は2~A列最終行まで For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row '変数「j」は1~9まで4行置き(A・E・I列を取得) For j = 1 To 9 Step 4 'M列最終行の1行下の・・・ With Cells(Rows.Count, 13).End(xlUp).Offset(1) '値はi行j列目の値 .Value = Cells(i, j) '表示形式は「月/日」 .NumberFormatLocal = "m/d" 'M列最終行の1行下の1列右隣の値はセル番地(i,j)の1列右隣の値 .Offset(, 1) = Cells(i, j + 1) 'M列最終行の1行下の2列右隣の値はセル番地(i,j)の2列右隣の値 .Offset(, 2) = Cells(i, j + 2) End With '次の「j」で同様の操作 → 次の「i」で同様の操作(変数宣言の最後まで) Next j Next i '変数の宣言 Dim k As Long 'kはM列の最終行 k = Cells(Rows.Count, 13).End(xlUp).Row 'M2セル~O列最後の範囲をM1セルのキーで昇順に並び変え Range(Cells(2, 13), Cells(k, 15)).Sort Key1:=Cells(i, 13), order1:=xlAscending End Sub 長々と失礼しました。m(__)m
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17068)
この程度のものは>コメント付きで解説いただけると、なんて言わず、勉強するべきだ。 ABC とEFG とIJK列のデータの最終行は、A,E,I列の最下行を割り出せば良いだろう。 最下行番号は Sub test01() 'A列の最終行の行番号 d1 = ActiveSheet.Range("A65536").End(xlUp).Row MsgBox d1 End Sub で判る。それが判れば、その範囲A,B,C列の範囲は range("A2:C" & d1).Copyでコピー出来る。 これをMNO列に貼り付ける。 Sub test01() d1 = ActiveSheet.Range("A65536").End(xlUp).Row MsgBox d1 Range("A2:C" & d1).Copy Destination:=Range("M2") End Sub その後のEFG列データの場合は、M列のデータの最終行の次行からに貼り付ける。最初は第2行目であるが、EFG,IJKの場合に行くにつれ下に下がった位置になる。 ーー あとMNO列データを日付でソートしているようだ。 これはマクロの記録を採ればよい。 範囲の最終行は上記のコードの応用で出来る。MNO列を範囲指定してソートしないと全列がソートされてしまうので注意。 ーー 上記のコード例のEnd(xlUp).Row はその列の十分下の方のセルを選択しておいて、ENDキーを押し、上矢印キーを押す操作なんです。これを知っておれば、マクロの記録を採れば、どういうコードになるか分かる。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 Sub test() Dim i, j As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To 9 Step 4 With Cells(Rows.Count, 13).End(xlUp).Offset(1) .Value = Cells(i, j) .NumberFormatLocal = "m/d" .Offset(, 1) = Cells(i, j + 1) .Offset(, 2) = Cells(i, j + 2) End With Next j Next i Dim k As Long k = Cells(Rows.Count, 13).End(xlUp).Row Range(Cells(2, 13), Cells(k, 15)).Sort Key1:=Cells(i, 13), order1:=xlAscending End Sub こんな感じですかね?m(__)m
補足
ご指導ありがとうございます。 なにぶん初心者なもので・・・ マクロの各行がどのような処理なのか???? 可能であれば各行でコメント解説いただければありがたいのですが。 よろしくお願いいたします。
- MackyNo1
- ベストアンサー率53% (1521/2850)
この程度の作業なら、マクロを使わなくても一般機能だけで簡単にデータの編集ができます。 例えば、A2セルからC100セル(実際のデータよりも大きめに選択するとよい)を選択して、Ctrl+Cでコピーし、M2セルを選択してCtrl+Vで貼り付けます。 同様にD2セルからF100セルを選択してコピーし、M101セルを選択して貼り付け、さらにG2セルからJ100セルを選択してコピーし、M201セルを選択して貼り付けます。 最後にM1セルからO300セルを選択して「データ」並べ替え」でA列を基準に昇順で並べ替えれば完成です。 この操作を「新しいマクロの記録」で実行すれば、マクロでご希望の操作を実行することができます。 #エクセルのバージョンによって操作法や使用できる機能や関数が異なりますので、質問の際には必ずバージョンを明記するようにしましょう。
関連するQ&A
- エクセル2000で・・
品番 品名 単価 在庫数 1 リンゴ 120 1000 2 ミカン 100 1000 3 バナナ 80 1000 という表があるとします。 次に別シートに 品番 品名 単価 売れた数 2 ミカン 100 10 と、売れた分量を示す表があります。 そしてもう一つ別シートに 品番 品名 単価 在庫数 1 リンゴ 120 1000 2 ミカン 100 990 3 バナナ 80 1000 というシートがあり、一つ目のシートから二つ目のシートで売れた分の数を引いた数量を表す表があります。 二つ目の表を入力した際に、自動的に三つ目の表の在庫数が表示されるような関数はありますでしょうか?
- ベストアンサー
- Windows XP
- エクセル いろいろな品名ごとに条件付きのカウントをしたい。
エクセルマクロについて教えてください。 以下の「元の表」から「抽出した表」のように、○がついているもののカウントをしたいのですが、マクロでやるにはどのようにしたらよいでしょうか。 品名は特定なものではなく、無限にあります。 〔元の表〕 品名 区分 りんご ○ りんご × みかん ○ バナナ ○ バナナ × キウイ ○ りんご × キウイ ○ りんご ○ : : 〔抽出した表〕 品名 区分 数量 りんご ○ 2 みかん ○ 1 バナナ ○ 1 キウイ ○ 2 : :
- 締切済み
- オフィス系ソフト
- エクセル マクロ
以下の処理を教えて頂ける方がいらっしゃいましたらご教示ください。 A - B - C - D - E 日付 - 商品名 - 単価 - 数量 - 金額 a41 - バナナ - 120 - 10 - 1,200 a42 - みかん - 110 - 20 - 2,200 a42 - りんご - 150 - 10 - 1,500 a42 - バナナ - 120 - 15 - 1,800 a42 - なし - 150 - 20 - 3,000 a51 - りんご - 150 - 30 - 4,500 a51 - バナナ - 120 - 25 - 3,000 a51 - なし - 160 - 20 - 3,200 a52 - りんご - 145 - 35 - 5,075 a52 - みかん - 120 - 40 - 4,800 a53 - バナナ - 115 - 25 - 2,875 上記、シート1のデータが、3000行あります。 A - B - C - D - E 日付 a42 a52 上記、シート2のデータが、150行あります。 A - B - C - D - E 日付 - 商品名 - 単価 - 数量 - 金額 a42 - みかん - 110 - 20 - 2,200 a42 - りんご - 150 - 10 - 1,500 a42 - バナナ - 120 - 15 - 1,800 a42 - なし - 150 - 20 - 3,000 a52 - りんご - 145 - 35 - 5,075 a52 - みかん - 120 - 40 - 4,800 シート3に上記データのように抽出するには、どうすればよろしいでしょうか。 オートフィルタで,抽出後、抽出範囲をシート3にコピー貼り付けを繰り返しているのですが、もっといい方法(VBA)で、できませんでしょうか。
- ベストアンサー
- Visual Basic
- エクセルでの質問です
毎度お世話になっております。 エクセルで下記のような事は出来ますでしょうか? シート1に品名、数量が記載されておりますがシート2に抽出された結果のみ表示する 例)シート1 りんご 100 みかん 200 バナナ 200 りんご 200 バナナ 300 いちご 200 シート2(結果表示) りんご 300 みかん 200 バナナ 500 いちご 200 と、それぞれの合計数量を抽出結果として表示して管理を行いたいと思ってます。 教えてください
- ベストアンサー
- Windows XP
- エクセル 複数列からの抽出
表題の質問をさせていただきます。 以下の表があります。 りんご --- --- --- --- りんご --- --- みかん --- バナナ --- --- --- --- バナナ バナナ --- みかん --- りんご・みかん等はVLOOKUPで表示されており、「---」部も、ここでの質問上 便宜的に「---」としていますが 実際にはVLOOKUP関数が入っていてエクセル上では 見た目は空白になっています。 さて、質問なのですが、上記表から文字が入っている部分のみを抜き出して以下のようにしたいのです。 抜き出し先は同一シート内でも別シートでもかまいません。 りんご りんご バナナ バナナ みかん みかん バナナ 実際の表は30列・80行前後でして、現在は各列毎にオートフィルタの空白以外のセルで選択してコピペを列数分だけ繰り返しています。 関数やVBAで効率よく選択することが出来ますでしょうか。 エクセル2003です。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excel マクロのオートフィルターについて
オートフィルターのコピーについて 下記の表で、「種類:空白」と「進捗:良」でオートフィルターで 絞ります。 ※リンゴとバナナが空白です。 <出荷シート> 製品名 種類 担当者 進捗 金額 リンゴ A 良 300 みかん 国産 B 良 100 なし 外国産 B 悪 150 バナナ C 良 80 絞った内容のみ、となりの「果物シート」のA2に貼り付ける場合に どのようなマクロになりますか。 また、7行目以降に行が追加されても対応できるマクロを考えています。 アドバイスお願いいたします。
- ベストアンサー
- その他MS Office製品
- マクロで一括挿入したい
急ですみませんが、ダイレクトに質問させていただきます。 エクセルで金額を出す為に表計算をしています。 品名ごとに単価が異なります。 量も多いので単価をマクロで一括挿入したいです。 現在はVLOOKUPを使って、単価を別シートから持ってきてます。 やりたいことは次の通りです。 画像を参考にお願いします。 「品名」が「りんご」だったら、「単価」は「200」。 「品名」が「みかん」だったら、「単価」は「100」。 上記の条件に加えて、 「品名」が「りんご」だけど、「単位」に「箱」が入っていたら「単価」は「1000」。 さらに、 「品名」が「みかん」だけど、「地名」に「青森」が入っていたら「単価」は「150」。 以上を加えたマクロをどのように書いたらいいか分からず、どうか教えていただきたいです。 どうぞよろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセルマクロを使って・・・
今下のような、データーがあるのです。 1月 2月 3月 ・・・・ りんご 10 15 14 みかん 30 18 14 ばなな 18 14 11 ・ ・ そのデーターを果物ごとにシートに名前をつけて書き出そうと思うのですが、データ量が膨大でマクロを使おうと思ったのですが、どうしていいのかわかりません。 提出書類は、エクセルのシートに埋めて提出しなければなりません。 どうしたらいいのか助けてください。
- ベストアンサー
- オフィス系ソフト
- Excelマクロで元データを簡潔な表に整形したい
Excelマクロで実現させたいのですが、どのようにすれば 良いのか悩み中です。 下記のような【ベース】の表を【整形後】に一覧表に したいと思っています。 記入条件 品番が同じであっても出荷日が違う場合はそれぞれ記入する 品番と出荷日が同じであれば出庫数を足して記入する これを実現させるにはどのような手順?でマクロを組めば 良いでしょうか?どなたか助けて下さい。 【ベース】 品番 品名 出庫数 出荷日 A-01 りんご 10 2/21 A-01 りんご 10 2/27 A-02 もも 10 2/21 A-02 もも 15 2/21 【整形後】 品番 品名 出庫数 出荷日 A-01 りんご 10 2/21 A-01 りんご 10 2/27 A-02 もも 25 2/21
- ベストアンサー
- Excel(エクセル)
お礼
解説までつけていただきありがとうございます。 大変参考になりました。