Excel2013を使用したデータの増減集計についての問題

このQ&Aのポイント
  • Excel2013を使用して、「受注書」というシートのデータを「集計表」というシートに集計する方法について質問があります。
  • テストデータではうまくいったが、実際のデータを増やすと「集計表」に増えたデータが残ってしまう問題が発生しています。
  • コードの一部を変更してみたが、重複データは消えたが集計結果の表示が正しくなく、不要な0も表示されてしまいます。どこを修正すればよいでしょうか?
回答を見る
  • ベストアンサー

増減するデータの集計について

Excel2013使用です。 「受注書」というシートのデータを集計し、「集計表」というシートに 書き出したいです。 【シート「受注書」】    C      D      E       F     G   1 商品名   色     数量    単価   備考 2 データ・・・・・・・・・・・・・・・ 【シート「集計表」】    A      B      C      D     E 6 商品名   色     数量    単価   備考 7 シート「受注書」のC~Fのデータをコピーし、 シート「集計表」のA~Dに貼り付け後、商品名を基準に重複を削除し、 各商品の合計数量をSUMIF関数で集計するようにしました。 テストデータでは上手く行ったのですが、「受注書」のデータは都度 増減があるため、データを増やして再度テストしたところ、増やした分の データが「集計表」の下部に残ってしまいます。 こんな感じ↓ 【シート「集計表」】    A      B      C      D     E 6 商品名   色     数量    単価   備考 7 *****    **     ***     ***    ** 8 ****     **     ***  ***    ** 12****     **     ***     ***    ** ←増やしたデータ コードは以下の通りです Sheets("受注書").Select Range("C2:G2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("集計表").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Range("$A$6:$E$25").RemoveDuplicates Columns:=1, Header:=xlYes Range("C7").Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("C7").Select ActiveCell.FormulaR1C1 = "=SUMIF(受注書!C3:C5,集計表!RC1,受注書!C5)" Range("C7").Select Selection.AutoFill Destination:=Range("C7:C9"), Type:=xlFillValues Range("C7:C9").Select Range("A2").Select End Sub 試しに ActiveSheet.Range("$A$6:$E$25").RemoveDuplicates Columns:=1, Header:=xlYes の部分を ActiveSheet.Range("$A:$E").RemoveDuplicates Columns:=1, Header:=xlYes に変えてみたところ、下部の重複データは消えたのですが、集計結果が何故か A7以降にではなくA4以降に表示されてしまい、罫線も消えてしまいました。 更に、C列の数量に不要な0が表示されてしまいます。 こんな感じ↓   A      B      C      D     E 4 商品名   色     数量    単価   備考 5 *****    **     ***     ***    ** 6 ****     **     ***  ***    ** 7                0 8                 0 どこを直したら良いでしょうか?

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 回答No.4です。 >「色」の列(シート:受注書ではD列、シート:集計表ではB列)は、 色指定の無い商品もあるため、空欄になる場合もあります。 >色の列が空欄の場合、SUMIFSの集計結果が「0」になってしまします。  それでしたら、 "=SUMIFS(受注書!C5,受注書!C3,RC1,受注書!C4,RC2,受注書!C7,RC5&"""")" の中のRC2と記されている所の条件式を、RC5の条件式と同様に & "" を付けて、 "=SUMIFS(受注書!C5,受注書!C3,RC1,受注書!C4,RC2&"""",受注書!C7,RC5&"""")" という形にして下さい。 >マクロ実行後に「シート:集計表」の6行目に入力して いる項目名(A6:商品名、B6:色・・・等)が消えてしまいます。  それはもしかしますと .Range("A7:E" & .Range("A" & Rows.Count).End(xlUp).row).ClearContents の所で指定するセル範囲を質問者様が間違えて .Range("A6:E" & .Range("A" & Rows.Count).End(xlUp).row).ClearContents などの様に古いデータを消去する範囲を6行目からにしてしまっているのではないでしょうか?  或は、VBAの構文の記述は正しくても、項目名を入力している行を間違えて7行目の所に項目名を入力しておられるのではないでしょうか?  後、おそらく関係ないと思いますが、RemoveDuplicatesのHeader:=xlYesとなっている所をxlYesではない別の設定値にしているという事はないでしょうか? Sub QNo9222268_増減するデータの集計について_改() With Sheets("集計表") .Range("A7:E" & .Range("A" & Rows.Count).End(xlUp).row).ClearContents End With With Sheets("受注書") .Range("C2:G" & .Range("C" & Rows.Count).End(xlUp).row).Copy End With With Sheets("集計表") .Range("A7").PasteSpecial Paste:=xlPasteValuesAndNumberFormats Application.CutCopyMode = False .Range("A6:E" & .Range("A" & Rows.Count).End(xlUp).row) _ .RemoveDuplicates Columns:=Array(1, 2, 4, 5), Header:=xlYes .Range("C7:C" & .Range("A" & Rows.Count).End(xlUp).row).FormulaR1C1 = _ "=SUMIFS(受注書!C5,受注書!C3,RC1,受注書!C4,RC2&"""",受注書!C7,RC5&"""")" End With End Sub

angelnavi
質問者

お礼

ありがとうございました! お陰さまで無事解決しました。 項目名が消える件に関しては、 Range("A7:E" & .Range("A" & Rows.Count).End(xlUp).row).ClearContents を Range("A7:E7" & .Range("A" & Rows.Count).End(xlUp).row).ClearContents に変更したら直りました。 本当に助かりました。 ありがとうございます。 月初で業務が忙しく、簡単なお礼しか言えず申し訳ありません。 本当に感謝申し上げます。

その他の回答 (4)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 まず、冒頭の所に「集計表」の古いデータを消去するための次の様な構文を付け加えて下さい。 With Sheets("集計表") .Range("A7:E" & .Range("A" & Rows.Count).End(xlUp).row).ClearContents End With  それから、 Sheets("受注書").Select Range("C2:G2").Select Range(Selection, Selection.End(xlDown)).Select などの様にコピー範囲を選択してコピーする際のVBAの構文も With Sheets("受注書") .Range("C2:G" & .Range("C" & Rows.Count).End(xlUp).row).Copy End With の様にまとめて書く事が出来ます。  同様に Sheets("集計表").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False の部分も With Sheets("集計表") .Range("A7").PasteSpecial Paste:=xlPasteValuesAndNumberFormats End With の様にまとめて書く事が出来ます。  また、Operationの部分もデフォルトでxlNoneの値となっていますので、xlNoneに設定する場合であれば、記述を省略してしまうだけで自動的にxlNoneに設定されますから、Operation:=xlNoneは不要です。(もしxlNone以外の設定にする場合にはOperation:=を省略する事は出来ません)  同様に、SkipBlanks :=FalseとTranspose:=Falseもデフォルトの設定値なので省略してしまって構いません。  それから、 ActiveSheet.Range("$A$6:$E$25").RemoveDuplicates Columns:=1, Header:=xlYes としていたのでは、商品名だけでしか重複の判定を行っていませんから、商品名が同じデータの中で色違いや「備考に記述されると思われる特注条件」が異なるものを集計表に反映させる事が出来ませんから、次の様にされた方が良いと思います。 With Sheets("集計表") .Range("A6:E" & .Range("A" & Rows.Count).End(xlUp).row) _ .RemoveDuplicates Columns:=Array(1, 2, 4, 5), Header:=xlYes End With  同様に "=SUMIF(受注書!C3:C5,集計表!RC1,受注書!C5)" という関数も、商品名だけしか合計の条件としていないため、商品名が同じデータの中で色違いや「備考に記述されると思われる特注条件」が異なるものを集計値に反映させる事が出来ませんから、SUMIF関数ではなくSUMIFS関数を使った次の様な関数にされた方が良いと思います。 "=SUMIFS(受注書!C5,受注書!C3,RC1,受注書!C4,RC2,受注書!C7,RC5&"""")" Sub QNo9222268_増減するデータの集計について() With Sheets("集計表") .Range("A7:E" & .Range("A" & Rows.Count).End(xlUp).row).ClearContents End With With Sheets("受注書") .Range("C2:G" & .Range("C" & Rows.Count).End(xlUp).row).Copy End With With Sheets("集計表") .Range("A7").PasteSpecial Paste:=xlPasteValuesAndNumberFormats Application.CutCopyMode = False .Range("A6:E" & .Range("A" & Rows.Count).End(xlUp).row) _ .RemoveDuplicates Columns:=Array(1, 2, 4, 5), Header:=xlYes .Range("C7:C" & .Range("A" & Rows.Count).End(xlUp).row).FormulaR1C1 = _ "=SUMIFS(受注書!C5,受注書!C3,RC1,受注書!C4,RC2,受注書!C7,RC5&"""")" End With End Sub

angelnavi
質問者

補足

とっても丁寧なアドバイスを頂き、ありがとうございます。 私はVBAはほとんど理解しておらず、マクロの自動記録で作った ものに少し手を加えただけのコードなので、色々とおかしな点や 洗練されていない箇所が多々あると思います。 今は会社なので、自宅に帰ったら再度じっくり拝見して勉強させて 頂きます。 さて、ご教示いただいたコードを早速試させて頂いたところ、無事 「下の方に増えたデータが残る」問題は解決しました。 が、あと少し問題があります。 私の説明不足で申し訳ありませんが、 「色」の列(シート:受注書ではD列、シート:集計表ではB列)は、 色指定の無い商品もあるため、空欄になる場合もあります。 色の列が空欄の場合、SUMIFSの集計結果が「0」になってしまします。 もう1点は、マクロ実行後に「シート:集計表」の6行目に入力して いる項目名(A6:商品名、B6:色・・・等)が消えてしまいます。 すみませんが、私ではどう直したら良いか分からないので、再度 教えて頂けないでしょうか。 何とぞよろしくお願いいたします。

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.3

とりあえず、2~3行目を変更してみてください。 Range("C2:G" & Range("C1").End(xlDown).Row).Select ' Range(Selection, Selection.End(xlDown)).Select←この行は不要で、上の行のセレクト範囲を「C2:G2」固定ではなく、データのある最終行にしてください。

  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.2

Sheets("集計表").Select の後に Range("A7:E7").Select Range(Selection, Selection.End(xlDown)).Clear として貼り付ける前に前回のデータを消せばいいのではないでしょうか。

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.1

何をされたいのか良く理解できませんが、 ピボットテーブルでは駄目なのですか?

関連するQ&A

  • 複数シートの内容を1つのシートに集計するVBA

    お世話になります。 ExcelのVBAについて質問させていただきます。 集計.xlsというブックがあります。 この中に[集計]、[東京支店]、[名古屋支店]、[大阪支店]というシートがあります。 やりたい事は[東京支店]、[名古屋支店]、[大阪支店]のシート内容を[集計]シートに順番にコピペしていきたいのです。 下記のVBAを組んでみましたがうまくいきません。 [東京支店]はうまくコピペ出来ますが、[名古屋支店]がコピペされず、[大阪支店]はコピペされますが東京支店のデータのすぐ下ではなく、50行ぐらい下の位置にコピペされてしまいます。 各支店のシートの内容は次の通りです。この内容を[集計]シートにコピペしたいのです。 [日付] [担当者] [金額] 11/1 田中 100円 11/2 山田 500円 どなたかご教授いただけますでしょうか? 環境 Windows XP SP3 Excel2003 ****VBA**** Sub test() Dim 下 As Integer '東京支店 Sheets("東京支店").Select Range("A2").Select '東京支店シートの見出し以外の全データをコピー Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy '集計シートに貼り付け Sheets("集計").Select Range("A2").Select ActiveSheet.Paste '次は名古屋支店 Sheets("名古屋支店").Select Range("A2").Select '名古屋支店シートの見出し以外の全データをコピー Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy '集計シートの最下行を取得 Sheets("集計").Select 下 = Range("A1").CurrentRegion.Rows.Count + 1 '集計シートに貼り付け Range("A2").Select ActiveCell.Offset(下 & "," & 0).Select ActiveSheet.Paste '最後に大阪支店 Sheets("大阪支店").Select Range("A2").Select '大阪支店シートの見出し以外の全データをコピー Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy '集計シートの最下行を取得 Sheets("集計").Select 下 = Range("A1").CurrentRegion.Rows.Count + 1 '集計シートに貼り付け Range("A2").Select ActiveCell.Offset(下 & "," & 0).Select ActiveSheet.Paste End Sub

  • VBAでブックの集計の仕方を教えてください。

    H22.12月度と言う名前のフォルダーにA店~E店と集計と言う名前のブックがあります。 集計のブックでA店~E店の集計をしてくるマクロを組んでいますが上手く作動しません。 集計のブックには、セルの書式設定をしていますので、A店~E店の売上一覧のシートから 値だけをコピーして集計したいのですが、罫線やパターン、数式までコピーしてきたり、 最後のE店だけ2重にコピーしてきたりと変な動作をします。 初心者で本やネットで調べながら作ったので、どこの記述がおかしくて、そうなるのかがさっぱりわかりません。 どなたか教えていただけませんでしょうか。よろしくお願いします。 Sub 集計() Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\H22.12月度\A店.xls" Sheets("売上一覧").Select Range("E5:Q24").Select Selection.Copy Application.WindowState = xlMinimized Windows("集計.xls").Activate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False If Range("E5").Value <> "" Then Range("E65536").Select Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If ActiveSheet.Paste Windows("A店.xls").Activate Range("E5").Select Application.CutCopyMode = False ActiveWindow.Close     ・     ・     ・(B・C・D店も同じ記述)     ・     ・   Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\H22.12月度\E店.xls" Sheets("売上一覧").Select Range("E5:Q24").Select Selection.Copy Application.WindowState = xlMinimized Windows("集計.xls").Activate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False If Range("E5").Value <> "" Then Range("E65536").Select Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If ActiveSheet.Paste Windows("E店.xls").Activate Range("E5").Select Application.CutCopyMode = False ActiveWindow.Close    Windows("集計.xls").Activate Application.WindowState = xlMaximized Range("E5").Select End Sub

  • excel vba DATAの日集計

    excel vba DATAの日集計 いつもお世話になっています。 "DATA"シートのセル"D2"の日付を変えると表の数値が変わるようにしています。 その日毎のデータを"集計"シートの日別の表に飛ぶようにしているのですが、 1日分の転記するセル数が多く、Select Caseで31日分のコードを書くと、あまりにも プロシージャーが大きくなります。(Case1からCase31・・・結果分割してますが) FOR NEXT なのかな~、もっと効率のいい書き方がありましたらよろしくお願いします。 例:"集計"シート1日分は、9行となります。それぞれ"DATA"シートからの転記です。"DATA"シートのF5+F10,G5+G10~AC5+AC10までそれぞれの値を"集計"シートのG5からAD5まで、F6+F12,G6+G12~AC6+AC12までそれぞれの値を"集計"シートのG13からAD13までといった具合です (日の9行はそれぞれ決まったある行とある行の加算です、これが31日分の行があります) Sub macro() Dim myrng As Range Dim c As Range Set myrng = Sheets("DATA").Range("D2") For Each c In myrng Select Case c.Value Case 1 '1行目 Sheets("集計").Range("G5").Value = Sheets("DATA").Range("F5") + Sheets("DATA").Range("F10") | | Sheets("集計").Range("AD5").Value = Sheets("DATA").Range("AC5") + Sheets("DATA").Range("AC10") | | '9行目Sheets("集計").Range("G13").Value = Sheets("DATA").Range("F6") + Sheets("DATA").Range("F12") | | Sheets("集計").Range("AD13").Value = Sheets("DATA").Range("AC6") + Sheets("DATA").Range("AC12")

  • マクロでシート2~6のデータをシート1に転記したい

    マクロでシート2~6のデータをシート1に転記したいです。 シート2~6のデータを シート1に順番に転記したくてマクロの記録を利用して作成しました。 シート2~6は列は同じですが行数は異なります。 また行数は作業の都度異なります。 同じ記述が繰り返されているので もう少し記述が短くできるのではと思うのですが どうすればいいでしょうか? Sub データ更新() 'シート1の前回データをクリア Sheets("シート1").Select Range("A2:Q2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("A2").Select Sheets("シート1").Select Range("A1").Select Sheets("シート2").Select Range("A1").Select 'ヘッダーも合わせて取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート3").Select Range("A2").Select 'データのみ取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート4").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート5").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート6").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select End Sub

  • フォームに入力された日付のデータのみコピペする

    お世話になります。 前回に引き続きExcelのVBAについて質問させていただきます。 (前回も似たような質問なので申し訳ございません) 集計.xlsというブックがあります。 この中に[集計]、[東京支店]、[名古屋支店]、[大阪支店]というシートがあります。 前回の質問で[東京支店]、[名古屋支店]、[大阪支店]のシート内容を[集計]シートに順番にコピペすることは出来ました。回答をいただきました皆様ありがとうございました。 今度やりたいことは[東京支店]、[名古屋支店]、[大阪支店]のシート内容を[集計]シートに順番にコピペする時に1つ条件を付けて、[日付がXXXのデータのみコピぺする]といった具合にしたいのです。 各支店のシートの内容は以下の通りです。 日付] [担当者] [金額] 11/1 田中 100円 11/2 山田 500円 今回はフォーム(Form1)を作成して、条件に使う日付を"Text.box1"に入力させるようにしました。 [集計]シートに[東京支店]、[名古屋支店]、[大阪支店]の全データをコピー後に、このフォームを起動させてTextbox1に日付を入力させてから[抽出]というボタンを押したら以下VBAを起動させて、[集計]シートの データを上から下まで全てREADして、Text.box1に入力された日付と異なるデータを削除する方法で実現しようと考えました。 しかし、削除するロジックがうまく動作せず、Textbox1に入力された日付と異なった[集計シート]の日付データでも削除するデータもあれば、削除しないデータもあります。 自分でやっていて効率が悪い方法だな、ともいます・・。 出来れば[集計]シートへのコピペ前にフォームを出して、Textbox1に条件の日付を入力させて[抽出]ボタンを押したら、Textbox1の日付のデータだけをコピペ出来れば最高です。 どなたかご教授いただけますでしょうか? 環境 Windows XP SP3 Excel2003 ****VBA**** Sub test() Dim 下 As Integer '東京支店 Sheets("東京支店").Select Range("A2").Select '東京支店シートの見出し以外の全データをコピー Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy '集計シートに貼り付け Sheets("集計").Select Range("A2").Select ActiveSheet.Paste '次は名古屋支店 Sheets("名古屋支店").Select Range("A2").Select '名古屋支店シートの見出し以外の全データをコピー Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy '集計シートの最下行を取得 Sheets("集計").Select 下 = Cells(Rows.Count, 1).End(xlUp).Row +1 '集計シートに貼り付け Range("A2").Select ActiveCell.Offset(下 ,0).Select ActiveSheet.Paste '最後に大阪支店 Sheets("大阪支店").Select Range("A2").Select '大阪支店シートの見出し以外の全データをコピー Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy '集計シートの最下行を取得 Sheets("集計").Select 下 = Cells(Rows.Count, 1).End(xlUp).Row +1 '集計シートに貼り付け Range("A2").Select ActiveCell.Offset(下 ,0).Select ActiveSheet.Paste '集計シートのデータを全READ i=2 Do 'フォームのTextBox1に入力された日付以外は削除 If Cells(i, 1).Value <> TextBox1.Value Then Rows(i & ":" & i).Select Selection.Delete Shift:=xlUp End If i = i + 1 Loop Until Cells(i, 1) = "" End Sub

  • Excel 2007 マクロ 表の集計

    Excel 2007 マクロ 表の集計 「Sheet1」に2つの表があります。 <元データ>の項目ごとに<集計結果>の 計の列に数字が反映されるようにしたいと考えています。 表の画像を添付します。 <元データ>の項目のアルファベットごとに<集計結果>の 項目に分かれます。 マクロの記録では下記にようになりました。 Sub Macro1() ' ' Macro1 Macro ' ' Range("B15").Select ActiveCell.FormulaR1C1 = "=R[-12]C+R[-11]C+R[-10]C" Range("B16").Select ActiveCell.FormulaR1C1 = "=R[-10]C+R[-9]C" Range("B17").Select ActiveCell.FormulaR1C1 = "=R[-9]C+R[-8]C+R[-7]C" Range("B18").Select End Sub どのようにすれば、マクロでアルファベットごとに集計できるのでしょうか。 よろしくお願いいたします。

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • 集計方法を教えてください。

    複数シートのデータを集計用に作成したシートにデータをコピーしたい。 シート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 ※集計表には、品名と営業所名のみが記載されているため「数量」と「日付」のみをコピーしたい よろしくお願いします。

  • エクセルマクロ 抽出したデータを別のシートへコピーしたい

    マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 【1】シート名「データ」をA列でオートフィルタ抽出して、別シートにコピーする。 【2】別シートにコピーしたデータに外枠罫線をつける。 【3】シート名「データ」には塗りつぶしがあるので、別シートにコピーされた塗りつぶしは「なし」する。 【4】シート名「Sheet1」の1~2行目をコピーし、別シートの1~2行目に挿入し、シート名「データ」に戻る。 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、今はコピーして「あ行」の部分を書き換えています。(かなり面倒です) 最終的には、抽出されたそれぞれのシートを別々のブックにしたいとも思っています。 長々とすみませんが、どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 Sheets("データ").Select Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="あ行", Operator:=xlAnd Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy Sheets("あ行").Select Range("A1").Select ActiveSheet.Paste Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Cells.Select Selection.Interior.ColorIndex = xlNone Sheets("Sheet1").Select Rows("1:2").Select Selection.Copy Sheets("あ行").Activate Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1").Select Sheets("データ").Select Range("A1").Select

  • 複数のエクセルブックを統合し集計するマクロ

    各担当者の月毎の実績を集計するマクロを作ろうとしています。 *販売月、顧客名、金額などの見出しが各ブックの7行目まで、  8行目以降の行数は各担当者によって異なります。  (50行くらいの担当者もいれば300行くらいになる担当者も) *"E1"に販売月を入力し、4月から翌年3月までの実績、予算を入れるのですが、  担当者によっては空白の行を挿入しているため、  空白以降の行がカウントされず、うまく集計できません。 *各ブックの実績データの下で集計しているため、値の入っているセルを選択するのではなく、  実績データ部分だけコピーするにはどうしたら良いのでしょうか?  範囲に名前を付ければ良いのでしょうか?  マクロのことがよく分かっておらず、ネットや本を見て 使えそうなマクロを組み合わせて作ってみたのですが、 何か良い方法があれば教えて頂けると大変助かります。 説明も下手で恐縮ですが宜しくお願い致します。 ************************************ Workbooks.Open Filename:= _ "担当者A" _ , ReadOnly:=True '"貼付シート"にコピー、ファイルを閉じる Sheets(1).Select Cells.Select Selection.Copy Range("A8").Select Windows("貼り付けシートのあるブック").Activate Sheets("貼付シート").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A1").Select Windows(2).Activate ActiveWorkbook.Close SaveChanges:=False '貼付シートの各担当者の見出し行を削除 Rows("1:7").Select Range("A1").Activate Selection.Delete Shift:=xlUp "統合シート"シートを新しいシート(Sheet1)として追加 Sheets("統合シート").Copy Before:=Sheets("統合シート") Sheets("統合シート (2)").Name = "Sheet1" '行数取得 Dim 件数 As Integer Dim 行数 As Integer '前回までの行数用 Dim 行数_Total As Integer '最終行用 Sheets("貼付シート").Select 販売月セルで入力行数をカウント(必須入力項目の為) Range("E1").Select Selection.CurrentRegion.Select 件数 = Selection.Rows.Count 行数 = 件数 + 8 'Headder分(7行)の次の担当者のスタート行数を足す '貼付シートからデータをコピーして貼り付け Sheets("貼付シート").Select Range(Cells(1, 2), Cells(件数, 49)).Select Selection.Copy Sheets("Sheet1").Select Range("B8").Select '元ファイルから値と書式を貼付 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False '最終行を前回最終行エリアへ移動 行数_Total = 行数 '貼付シートをクリア Windows("統合シート").Activate Sheets("貼付シート").Select Cells.Select Selection.Delete Shift:=xlUp Range("A1").Select

専門家に質問してみよう