View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
joel joel is offline
external usenet poster
 
Posts: 9,101
Default How does this work?

See comments. the code is filtering each column in sheet 1 starting in
column 3 ("C") looking for the X in each column. Then copying columns A:B to
a new worksheet. The new worksheet is named the column Header in row 1. The
code is naming the new worksheet the 1st 31 letters of the Header in the
column.

Sub x()

Dim c As Long

With Sheet1
'turn oiff all autofilter on worksheet
.AutoFilterMode = False
'look at all columns where there data in row 1
'start at column 3 and move to last column with data
'C is the column Number starting at 3
For c = 3 To .Cells(1, 1).End(xlToRight).Column
'auto filter column C - the filed is the column
.Range("A1").AutoFilter Field:=c, Criteria1:="X"
'add new workshee to workbook
'the sheet name is the 1st 31 chaaracter in row 1, column C
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Left(.Cells(1,
c), 31)
'copy the first two columns of the autofiler rows
'to the new worksheet
.AutoFilter.Range.Resize(, 2).Copy ActiveSheet.Range("A1")
'remove the autofilter
.ShowAllData
Next c
.AutoFilterMode = False
End With

End Sub

"leimst" wrote:

Can anyone interpret this code for me to explain the logic in how it works.
I've run it and can see the results but I still don't understand the logic
used that makes this small amount of code do so much!

Sub x()

Dim c As Long

With Sheet1
.AutoFilterMode = False
For c = 3 To .Cells(1, 1).End(xlToRight).Column
.Range("A1").AutoFilter Field:=c, Criteria1:="X"
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Left(.Cells(1,
c), 31)
.AutoFilter.Range.Resize(, 2).Copy ActiveSheet.Range("A1")
.ShowAllData
Next c
.AutoFilterMode = False
End With

End Sub

Thanks,

Brian