No.2ベストアンサー
- 回答日時:
こんにちは
回答が無いようですので・・・
内容的に多少複雑ですが、ご質問文にない不明点は勝手に解釈してあります。
違っている部分があれば、適当に修正してください。
※ 結合セルの存在は考慮していません。(無いものと仮定)
Sub Q_13192436()
Dim menu As Worksheet, mtrl As Worksheet, sh As Worksheet
Dim MRmenu As Long, MRmtrl As Long, mn As String
Dim r As Range, i As Long, n As Long
Set menu = shtChk("メニュー")
Set mtrl = shtChk("材料")
If menu Is Nothing Or mtrl Is Nothing Then
MsgBox "必要なシートがありません"
Exit Sub
End If
mtrl.Cells(1, 1).AutoFilter
MRmenu = menu.Cells(Rows.Count, 1).End(xlUp).Row
MRmtrl = mtrl.Cells(Rows.Count, 1).End(xlUp).Row
If MRmenu < 2 Or MRmtrl < 2 Then Exit Sub
Set r = mtrl.Cells(1, 1).Resize(MRmtrl, 10)
Application.ScreenUpdating = False
For i = 2 To MRmenu
mn = menu.Cells(i, 2).Text
If menu.Cells(i, 1) <> "" And mn <> "" Then
n = WorksheetFunction.CountIf(menu.Cells(2, 2).Resize(i - 1), mn)
If n > 1 Then mn = mn & "(" & n & ")"
Set sh = shtChk(mn)
If sh Is Nothing Then
Set sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
sh.Name = mn
End If
sh.Columns("A:E").Clear
sh.Cells(1, 1).Value = menu.Cells(i, 1).Value
r.AutoFilter Field:=1, Criteria1:=menu.Cells(i, 1).Text
r.Columns("F:J").Copy sh.Cells(2, 1)
r.AutoFilter
n = sh.Cells(Rows.Count, 1).End(xlUp).Row
If n > 3 Then sh.Cells(2, 1).Resize(n, 5).Sort Key1:=sh.Cells(2, 1), Header:=xlYes
End If
Next i
Application.ScreenUpdating = True
End Sub
Function shtChk(ByVal n As String) As Worksheet
Dim sh As Worksheet
For Each sh In Worksheets
If sh.Name = n Then Set shtChk = sh: Exit For
Next sh
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
- Visual Basic(VBA) 2つの条件が一致したら一覧へコピーしたい。 左から4番目以降のシート名にコードが入ったシートを全て、 5 2022/09/20 19:41
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) VBAを使いシート間で貼り付け 3 2023/03/14 20:53
- Visual Basic(VBA) 範囲を指定して別シートにコピペ 2 2022/09/15 07:32
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
XL:BeforeDoubleClickが動かない
-
セルの値によって、シート見出...
-
【ExcelVBA】全シートのセルの...
-
【VBA】色のついたシート名を取得
-
エクセルのシート名変更で重複...
-
ブック名、シート名を他のモジ...
-
ExcelVBA シート名を複数セルか...
-
VBAでオブジェクト変数にsetし...
-
Worksheet_Changeの内容を標準...
-
同じ作業を複数のシートに実行...
-
VBAの天才来てください
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
別のシートを参照して計算する方法
-
【VBA】指定した検索条件に一致...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
excelのマクロで該当処理できな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報
ご質問ありがとうございます。振り分けた後はそのまま保存しますので、再度実行は考えてはいませんが、そのまま上書きされると良いです。
宜しくお願い致します。