
教えていただきたいです。
エクセルで複数シートがありそれぞれのシートには表があり、ある項目のところをフィルタで抽出して別ファイルにして値にして名前をつけて保存させたいのです。
(例)項目を店舗名としたとき、全てのシートに店舗名という項目はあり(表の大きさ、項目の数は異なります)店舗名A商店からG商店があるとして、その店舗ごとに全てのシートそれぞれフィルタして(他店舗は消す)店舗ごとのファイルを名前をつけて値にして保存して作成させたいのです。
今はA商店のファイルを作成するときは項目名のところでフィルタでA商店以外を表示させてまず全部削除したらA商店だけの表になります。その作業をすべてのシートで行い値にして名前を付けて保存していきます。かなり時間かかります。
マクロを作成したいのですが、教えていただけたら助かります。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
投稿して気が付きましたが、
>値にして
thisBK.Sheets(j).Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy WB.Sheets(j).Range("A1")
ここは、自身で直してください。
No.3
- 回答日時:
こんばんは、
>ただし、3つのシートの表は全く同じではなく店舗名の項目も同じ位置ではないです。
さすがにまだアバウトですね。同じでないなら、示さなければ中々アドバイスはできません。
>マクロを作成したいのですが、教えていただけたら助かります。
ソースコードなどが示されていないのでどこからアドバイスすれば良いか分かりません。
手順でしょうか?
想像の範疇を超えませんが、あくまで一例として
①店舗項目の重複しないリストを作る。(配列など)*Sheets(1)が良さそう?
②新規ブックを3シートで作成する
③店舗項目にリストでフィルタをかける *この場所が不明(補足にもない)
④対象シートの可視セルをコピー新規ブックの対象シートにペーストする
⑤シート数③④を繰り返す
⑥新規ブックにリスト名で保存し閉じる
⑦リストの数だけ②~⑥を繰り返す
参考コード書いたほうが良いか悩みましたが、一応 書いてみました。うまく完了すれば良いのですが、、
解らないかも知れませんが、内容を必ず確認してコピーファイルなどで試してください。
仕様は下記条件
>シートが3つあります。
*3シートの新規ブックを作成します
>~商店で絞りファイル名はA商店として保存します。
キーワードをファイル名にします。*ただしすでに同名ファイルがある時の処理は割愛(ご自身で)
>同じではなく店舗名の項目も同じ位置ではないです
画像だと店舗、ご質問だと店舗名、、、果たしてどちらか? *店舗とします。(各シートにこの見出しが必ずある事)
>商店ごとのファイルを作成させたい
作成してデスクトップにキーワードで保存します。
>A商店からF商店まであったとしたら6つのファイルを作成
キーワードの数は制限なし *ただし、メモリースタックの可能性はあります。
*処理は比較的重いと思います。
Sub ANS()
Dim Rng
Dim i As Long, j As Integer: j = 0
Dim Key_list As New Collection, KeyItem()
Dim Temp As Integer
Dim thisBK As Workbook, WB As Workbook
Set thisBK = ThisWorkbook
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With
On Error Resume Next
Rng = TargetRng(1)
With Sheets(1)
For i = 4 To .Cells(Rows.Count, Rng(2)).End(xlUp).Row
On Error Resume Next
Key_list.Add .Cells(i, Rng(2)).Value, CStr(.Cells(i, Rng(2)).Value)
If Err.Number = 0 Then
ReDim Preserve KeyItem(j)
KeyItem(j) = .Cells(i, Rng(2)).Value
j = j + 1
End If
On Error GoTo 0
Next
End With
Temp = Application.SheetsInNewWorkbook
For i = 0 To UBound(KeyItem)
Application.SheetsInNewWorkbook = 3
Set WB = Workbooks.Add
thisBK.Activate
For j = 1 To 3
Rng = TargetRng(j)
thisBK.Sheets(j).Range(Rng(0)).Offset(1).AutoFilter 1, KeyItem(i)
thisBK.Sheets(j).Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy WB.Sheets(j).Range("A1")
thisBK.Sheets(j).Cells.AutoFilter
Next
WB.SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & KeyItem(i) & ".xlsx"
WB.Close
Set WB = Nothing
Next
Application.SheetsInNewWorkbook = Temp
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
MsgBox ("完了")
End Sub
Function TargetRng(ShtIdx As Integer) As Variant
Dim K_Rng As Range, RngData(2)
Dim thisBK As Workbook
Set thisBK = ThisWorkbook
Set K_Rng = thisBK.Sheets(ShtIdx).Cells.Find(What:="店舗", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False, MatchByte:=False)
RngData(0) = K_Rng.Address(0, 0)
RngData(1) = K_Rng.Row
RngData(2) = K_Rng.Column
TargetRng = RngData
Set thisBK = Nothing
Set K_Rng = Nothing
End Function
*ネット上に挙がっているプログラムを分からず実行するのは危険です。
悪意あるソースコードもありますので、自己責任でお願いします。
No.2
- 回答日時:
こんにちは
ご質問が抽象的過ぎて(なさりたいことはわかりますが)、とてもコードにはなりません。
せいぜい言えるのは
1)「マクロの記録」機能を利用して、「A商店」についての処理を記録します。
2)できた記録のなかの「A商店」の部分を変数にして、変数の内容を変えれば他の商店に対しても処理できるように変更ます。
くらいでしょうか。
必ずしも効率的なコードになるとは限りませんが、一応、使えるものにはなると思います。
コツとしては、記録を取る際には「無駄な操作は全て省く」ことでしょうか。
No.1
- 回答日時:
そんなアバウトな質問の仕方では解答は得られないですよ。
プログラム(今回はマクロ)は、どの場所の何をどこからどこまでどのように行う、と言う組み合わせで出来ていますから、それを明確に相手にわかるように画像と文章で伝えないと回答したくても出来ないですよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルのフィルターを複数シートに連動させたいです。 エクセルファイルに15シートあります。 そのう 2 2022/05/01 21:47
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
VBAでブックを非表示で開いて処...
-
同じフォルダへのハイパーリン...
-
Excel(2010)のフィルターが保...
-
エクセルで別ブックをバックグ...
-
Excelでブックの共有を掛けると...
-
【マクロ】アクティブセルの時...
-
Excelファイルをダブルクリック...
-
VBA バックグラウンドで別ブッ...
-
beckyに届いたメールをエクセル...
-
エクセルで参照しているデータ...
-
Excelの新しい空白のブックを開...
-
参照したいブックのパス名に"["
-
Excelの警告について
-
ブックのピボットを別ブックに...
-
複数エクセルから特定シートの...
-
「ブックの共有」を有効にして...
-
Excelで指定範囲のデータ...
-
フォルダ内の複数ファイルから...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】アクティブセルの時...
-
Excelの新しい空白のブックを開...
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
Excelファイルをダブルクリック...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
Excelの警告について
-
Excelで複数ブックの同一セルに...
-
フォルダ内の複数ファイルから...
-
同じフォルダへのハイパーリン...
-
エクセルにおける,「ブック」...
-
別ブックから入力規則でリスト...
-
エクセルで別ブックをバックグ...
-
エクセルでウィンドウの枠固定...
-
エクセルファイルを開かずにpdf...
-
「ブックの共有」を有効にして...
おすすめ情報
すみません。アバウトすぎて・・・
図の元のファイルは上側でシートが3つあります。
数量シートはC3をフィルタしてA商店に絞ると下側の表になります。
同様に他の2つのシートも店舗名をフィルタしてA商店で絞りファイル名はA商店として保存します。
ただし、3つのシートの表は全く同じではなく店舗名の項目も同じ位置ではないです。
それぞれ同様に商店ごとのファイルを作成させたいのです。
A商店からF商店まであったとしたら6つのファイルを作成させるということです。
質問わかっていただけましたでしょうか。