[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラー「シート名が正しくありません」』(りりー)
オートフィルターで抽出したデータをシートごとに分ける下記マクロでArray内の品名に「*」をつけて抽出しても品名ごとのシート名になるようにするにはどのような変更をすればよいか教えてください。
Sub TEST2()
Dim A
'種別リストを作成
A = Array("いちご*", "みかん*", "めろん*", "ばなな*", "ぶどう*", "かき*")
For i = 0 To UBound(B)
'種別でフィルタ
Sheets(1).Range("A3").AutoFilter 2, A(i)
'シートを追加
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = A(i) 'シート名を変更
'フィルタ結果を転記
Sheets(1).Range("B3").CurrentRegion.Copy Range("B3")
Sheets(1).Range("B3").AutoFilter 'オートフィルタを解除
Next
End Sub
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
(白茶) 2022/12/23(金) 21:42:34
(木天蓼) 2022/12/23(金) 21:58:40
実際、人に聴く前に自分でやってみれば解るでしょうに
Sheets("Sheet*").Select
(自分で色々試しなさい) 2022/12/23(金) 22:58:57
Sub 別案()
Stop 'ブレークポイントの代わり
Dim キーワード As Variant
Dim dstSH As Worksheet
With Sheets(1)
.Range("A3").AutoFilter
For Each キーワード In Array("いちご", "みかん", "めろん", "ばなな", "ぶどう", "かき")
.AutoFilter.Range.AutoFilter Field:=2, Criteria1:="=" & キーワード & "*"
If .Cells(.Rows.Count, "B").End(xlUp).Row > 3 Then
Set dstSH = Sheets.Add(after:=Sheets(Sheets.Count))
dstSH.Name = キーワード
.AutoFilter.Range.Copy dstSH.Range("B3")
End If
Next キーワード
.AutoFilterMode = False
End With
End Sub
↑のように、オートフィルタで抽出するときだけワイルドカードを使って前方一致にしてはどうでしょうか?
(もこな2) 2022/12/24(土) 07:29:22
その場合↓でオートフィルタが解除される
.Range("A3").AutoFilter
結果↓が存在しなくなるからエラーになる
.AutoFilter.Range〜〜
もしそうであれば↓のように、オートフィルタをいったん解除してから設定するようにしてみてはどうでしょうか?
With Sheets(1)
.Range("A3").AutoFilter
↓
With Sheets(1)
.AutoFilterMode = False ←いったん解除してから
.Range("A3").AutoFilter ←改めてオートフィルタを設定
(もこな2) 2022/12/25(日) 15:05:38
(りりー) 2022/12/25(日) 23:33:18
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.