[英]Need help creating macro converting rows to sheets from Yes and No matrix
试试这个代码:
Option Explicit
Sub splitEq()
Dim ws As Worksheet, dataArea As Range, rng As Range, cl As Range
Const DATA_SHEET_NAME = "DataSheet" ' DataSheet into Worksheets("DataSheet") with the name of your own worksheet with data
Const ANCHOR = "H16" 'cell address within data range
Application.ScreenUpdating = False ' speed up script working
With ThisWorkbook.Worksheets(DATA_SHEET_NAME)
Set dataArea = .Range(ANCHOR).CurrentRegion
For Each cl In Intersect(dataArea(1).EntireRow, .UsedRange, .UsedRange.Offset(0, 1)) ' skip rows names column
dataArea.AutoFilter ' set initial filter or reset previous filter
dataArea.AutoFilter Field:=cl.Column - dataArea(1).Column + 1, Criteria1:="Y"
' select only visible cells after filter apply and get rows names at rows where these cells are is
Set rng = Intersect( _
Intersect(cl.EntireColumn, .UsedRange) _
.SpecialCells(xlCellTypeVisible) _
.EntireRow, .Columns(dataArea(1).Column))
If rng.Cells.Count > 1 Then ' rng contains not only header
Set ws = ThisWorkbook.Worksheets.Add
ws.Move After:=ThisWorkbook.Worksheets( _
ThisWorkbook.Worksheets.Count) ' move the ws to the end
ws.Name = cl ' set the ws name
rng.Copy ws.Range("A1")
End If
Next
.AutoFilterMode = False ' switch off the filter
End With
Application.ScreenUpdating = True
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.