マクロ初心者のため、やり方が全くわかりません。
どなたか教えてください。
やりたいことは、
【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
No.1ベストアンサー
- 回答日時:
データシートをインデックス(あ行 等)でFilterしてそれぞれを別ブックにコピーするマクロのサンプルです。
100%期待する結果になるところまでの自信はありませんが、ご参考まで。Sub Macro2()
Dim wb As Workbook
Dim str() As String
Dim idx As Integer
Set wb = ThisWorkbook
str = Split("あ行,か行,さ行,た行,な行,は行,ま行,や行,ら行,わ行", ",")
Application.ScreenUpdating = False
With wb.Worksheets("データ")
If .AutoFilterMode Then
.Cells.AutoFilter '一旦AutoFilterを解除し
End If
.Columns("A:A").AutoFilter 'A列に再度AutoFilterを設定
For idx = 0 To UBound(str)
.Columns("A:A").AutoFilter Field:=1, Criteria1:=str(idx)
.Range(.Range("A1"), .Cells.SpecialCells(xlLastCell)).Copy
Worksheets.Add 'シートを追加
ActiveSheet.Name = str(idx)
ActiveSheet.Paste
ActiveSheet.Cells.Interior.ColorIndex = xlNone
Range(Range("A1"), Cells(1, 1).SpecialCells(xlLastCell)) _
.Borders.LineStyle = xlContinuous
Range("A1").Select
ActiveSheet.Move '追加したシートを別Bookに移す
Next idx
.Cells.AutoFilter
wb.Activate
End With
Application.ScreenUpdating = True
End Sub
この回答への補足
早々のご回答、本当にありがとうございます!
とても助かりました。勉強になります!
よろしければ追加で教えていただきたいのですが、
「データ」シートから抽出して、新規シートに貼り付ける時に、
列幅も同時に貼り付けることは可能でしょうか?
また、別Bookに移す前に「sheet1」の1~2行(タイトル名が書いてあります)をコピーして、
「あ行」の1~2行目に挿入したいのですが、どうすればよいのでしょうか?
No.2
- 回答日時:
#01です
>列幅も同時に貼り付けることは可能でしょうか?
.Columns("A:Z").Copy
Activesheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
を挿入します
>「sheet1」の1~2行(タイトル名が書いてあります)をコピーして、
>「あ行」の1~2行目に挿入したいのですが、
.Rows("1:2").Copy
Activesheets.Range("A1").Insert Shift:=xlDown
を挿入します
どこに挿入すればうまくいくかは、ご自身で考えて試してみてください
(そうでないと丸投げになってしまいますから…)
親切に回答していただき、本当にありがとうございました。
おかげさまで、列幅貼り付けもタイトル挿入もなんとか組み込むことができました。
これから、もっともっと勉強していきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
Excel シートのコピーの際、ペ...
-
PDFファイルをコピーしてエクセ...
-
Excel 数式の保護をしたセルを...
-
【VBA】コピー&複数個所のペー...
-
エクセルのワークシートをUSBメ...
-
Excelの行をコピーして貼り付け...
-
【エクセル】プルダウン設定の...
-
エクセルの1シートの内容を複...
-
ExcelVBAで、ユーザーフォーム...
-
エクセルマクロで上書きして貼...
-
EXCELファイルをコピーすると終...
-
EXCELのVBAでシートコピーをし...
-
VBA シートをコピー後、ボタン...
-
エクセルのシートコピーした際...
-
Excel シートに別のExcelシート...
-
EXCEL2007でシートをコピーする...
-
アクセスの画面をプリントスク...
-
エクセルのページをシートごと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
Excelの行をコピーして貼り付け...
-
【Excel】数式をそのまま他のシ...
-
EXCELで別のブックから式をコピ...
-
【VBA】コピー&複数個所のペー...
-
エクセルの1シートの内容を複...
-
エクセルシートを別のエクセル...
-
PDFファイルをコピーしてエクセ...
-
CSVファイルについて質問です。
-
Excel 数式の保護をしたセルを...
-
【エクセル】プルダウン設定の...
-
【Excel VBA】シートコピー時、...
-
VBA シートをコピー後、ボタン...
-
エクセルVBA 1行飛ばしで転記す...
-
Excel シートのコピーの際、ペ...
-
エクセルで、開くのに時間のか...
-
Excel シートに別のExcelシート...
-
エクセルでシートを「移動また...
おすすめ情報