0
ブックの最初のシートに大量のデータセットをフィルタリングしてから、メインデータの最初の列にあるそれぞれの一意の名前ごとに別のワークシートを作成しますセット。私は与えられた名前に設定された主なデータをフィルタリングした後、私は特定のフィルタの列を小計しようとしていますVBAを使用して小計をExcelで新しいワークシートにコピー
例えば、(のは列Cとしましょう):
Sub CreateSheets()
Dim wsCurrent As Worksheet
Dim wsNew As Worksheet
Dim iLeft As Integer
Dim length As Long
Set wsCurrent = ActiveSheet
Application.ScreenUpdating = False
'Copy list of all players and remove duplicates
Range("A2", Range("A2").End(xlDown)).Copy Range("AY1")
Range("AY1").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
'Iterator
iLeft = Range("AY1").CurrentRegion.Rows.Count - 1
'For each player
Do While iLeft > 13
Set wsNew = Worksheets.Add
With wsCurrent.Range("A2").CurrentRegion
'Player name from copied list
.AutoFilter Field:=1, Criteria1:=wsCurrent.Range("AY1").Offset(iLeft).Value
'Hits
.AutoFilter Field:=3, Criteria1:="1"
length = .Range("C" & Rows.Count).End(xlUp).Row
wsNew.Range("A1") = "=SUBTOTAL(9," & wsCurrent.Name & "!C2:C" & length & ")"
'Turn off filters
'.AutoFilter
End With
'Name player sheet and move onto next
wsNew.Name = wsCurrent.Range("AY1").Offset(iLeft).Value
iLeft = iLeft - 1
Loop
'Clear player names in copied region
wsCurrent.Range("AY1").CurrentRegion.Clear
Application.ScreenUpdating = True
End Sub
ここでの主な問題は、小計があることです関数呼び出しは、もはや参照シートをメインシート上で見つけることができません。どんな助けでも大歓迎です。
編集:
次に、以下に正しい小計を示します。
length = .Range("C" & Rows.Count).End(xlUp).Row
wsNew.Range("A1") = "=SUBTOTAL(9," & wsCurrent.Name & "!C2:C" & length & ")"
wsNew.Range("A1").Value = wsNew.Range("A1").Value
最後の行は、フィルタが削除されたときに、目に見える細胞残骸の元の和(代わりに、フィルタを用いて表示されているセルの和をとるのが今除去される)ことを保証します。
これを実行すると、値を更新してExcelからファイルエクスプローラを開くように求められますか?これが何のためのものなのか? – rahlf23
コードをそのままそのままコピーしましたか?私が最初に書いたときに二重引用符とアンパサンドは含まれていなかったので、 'SUBTOTAL(9、wsCurrent.Name!C2:C"&length& ")"のように見えました。私が最初に投稿したのと同じようにコピーして、もう一度やり直してください。まだ失敗した場合は、実行中のものを投稿できますか? – Busse
データベースのシート名にスペースが含まれているため、それで、私はその問題を解決しました。唯一のもう一つは、新しいシートの範囲参照(セルをクリックしたとき)は次のようなものです:= SUBTOTAL(9、Sheet1!C1:C2)範囲が間違っています – rahlf23