Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hello,
I've been trying to data extract to new sheets using Debra Danglish's ExtractRep code. The code works great except for trying to filter out text that is contained within cells sometimes behind other text. For instance I want to filter TE out of DARFMTEA in row 3 and TERS45 in row 4. Please see my code below. Sub ExtractWorkTypInfo() Dim ws1 As Worksheet Dim wsNew As Worksheet Dim rng As Range Dim r As Integer Dim c As Range Set ws1 = Sheets("Summary") Set rng = Range("Database") 'Create a list of Tank Criteria 'This is where I copy my range List to Column W. 'This list contains things like TE,RF, etc.. up to 30 items. 'I put in the header name in row one. NameCrit 'ws1.Columns("W:W").Copy _ ' Destination:=Range("Z1") '- only if you use the full list ws1.Columns("W:W").AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=Range("U1"), Unique:=True r = Cells(Rows.Count, "U").End(xlUp).Row 'set up Criteria Area Range("W1").Value = Range("A1").Value For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = c.Value 'add new sheet (if required) 'and run advanced filter If WksExists(c.Value) Then Sheets(c.Value).Cells.Clear rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=Sheets(c.Value).Range("A1"), _ Unique:=False Else Set wsNew = Sheets.Add wsNew.Move After:=Worksheets(Worksheets.Count) wsNew.Name = c.Value rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=wsNew.Range("A1"), _ Unique:=False End If Next ws1.Select ws1.Columns("U:W").Delete End Sub Function WksExists(wksName As String) As Boolean On Error Resume Next WksExists = CBool(Len(Worksheets(wksName).Name) 0) End Function The my source column is column A. Any help you provide would be greatly appreciated. -- By persisting in your path, though you forfeit the little, you gain the great. |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I thiink you need to add an auxilarry formula. Use find to put a one in a
new column which you can use as a filter =if(isErr(find(TE,A1)),0,1) "DavidH56" wrote: Hello, I've been trying to data extract to new sheets using Debra Danglish's ExtractRep code. The code works great except for trying to filter out text that is contained within cells sometimes behind other text. For instance I want to filter TE out of DARFMTEA in row 3 and TERS45 in row 4. Please see my code below. Sub ExtractWorkTypInfo() Dim ws1 As Worksheet Dim wsNew As Worksheet Dim rng As Range Dim r As Integer Dim c As Range Set ws1 = Sheets("Summary") Set rng = Range("Database") 'Create a list of Tank Criteria 'This is where I copy my range List to Column W. 'This list contains things like TE,RF, etc.. up to 30 items. 'I put in the header name in row one. NameCrit 'ws1.Columns("W:W").Copy _ ' Destination:=Range("Z1") '- only if you use the full list ws1.Columns("W:W").AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=Range("U1"), Unique:=True r = Cells(Rows.Count, "U").End(xlUp).Row 'set up Criteria Area Range("W1").Value = Range("A1").Value For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = c.Value 'add new sheet (if required) 'and run advanced filter If WksExists(c.Value) Then Sheets(c.Value).Cells.Clear rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=Sheets(c.Value).Range("A1"), _ Unique:=False Else Set wsNew = Sheets.Add wsNew.Move After:=Worksheets(Worksheets.Count) wsNew.Name = c.Value rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=wsNew.Range("A1"), _ Unique:=False End If Next ws1.Select ws1.Columns("U:W").Delete End Sub Function WksExists(wksName As String) As Boolean On Error Resume Next WksExists = CBool(Len(Worksheets(wksName).Name) 0) End Function The my source column is column A. Any help you provide would be greatly appreciated. -- By persisting in your path, though you forfeit the little, you gain the great. |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks for the quick response Joel.
I took yout advice and this is what I've placed in column Z: =IF(ISERR(FIND(($U$2),A2)),0,1) Now if you could help me with how to filter the 1's to create separate new sheets. Thank you. -- By persisting in your path, though you forfeit the little, you gain the great. "Joel" wrote: I thiink you need to add an auxilarry formula. Use find to put a one in a new column which you can use as a filter =if(isErr(find(TE,A1)),0,1) "DavidH56" wrote: Hello, I've been trying to data extract to new sheets using Debra Danglish's ExtractRep code. The code works great except for trying to filter out text that is contained within cells sometimes behind other text. For instance I want to filter TE out of DARFMTEA in row 3 and TERS45 in row 4. Please see my code below. Sub ExtractWorkTypInfo() Dim ws1 As Worksheet Dim wsNew As Worksheet Dim rng As Range Dim r As Integer Dim c As Range Set ws1 = Sheets("Summary") Set rng = Range("Database") 'Create a list of Tank Criteria 'This is where I copy my range List to Column W. 'This list contains things like TE,RF, etc.. up to 30 items. 'I put in the header name in row one. NameCrit 'ws1.Columns("W:W").Copy _ ' Destination:=Range("Z1") '- only if you use the full list ws1.Columns("W:W").AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=Range("U1"), Unique:=True r = Cells(Rows.Count, "U").End(xlUp).Row 'set up Criteria Area Range("W1").Value = Range("A1").Value For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = c.Value 'add new sheet (if required) 'and run advanced filter If WksExists(c.Value) Then Sheets(c.Value).Cells.Clear rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=Sheets(c.Value).Range("A1"), _ Unique:=False Else Set wsNew = Sheets.Add wsNew.Move After:=Worksheets(Worksheets.Count) wsNew.Name = c.Value rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=wsNew.Range("A1"), _ Unique:=False End If Next ws1.Select ws1.Columns("U:W").Delete End Sub Function WksExists(wksName As String) As Boolean On Error Resume Next WksExists = CBool(Len(Worksheets(wksName).Name) 0) End Function The my source column is column A. Any help you provide would be greatly appreciated. -- By persisting in your path, though you forfeit the little, you gain the great. |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Not sure which part of the code you want to filter since there are two places
where you have advance filter. You can use autofilter (I used column E) and then copy the visible cells. Columns("E").AutoFilter Columns("E").AutoFilter Field:=1, Criteria1:="1" Cells.SpecialCells(xlCellTypeVisible).Copy field 1 is column E since only one column is spedified in the autofilter. "DavidH56" wrote: Thanks for the quick response Joel. I took yout advice and this is what I've placed in column Z: =IF(ISERR(FIND(($U$2),A2)),0,1) Now if you could help me with how to filter the 1's to create separate new sheets. Thank you. -- By persisting in your path, though you forfeit the little, you gain the great. "Joel" wrote: I thiink you need to add an auxilarry formula. Use find to put a one in a new column which you can use as a filter =if(isErr(find(TE,A1)),0,1) "DavidH56" wrote: Hello, I've been trying to data extract to new sheets using Debra Danglish's ExtractRep code. The code works great except for trying to filter out text that is contained within cells sometimes behind other text. For instance I want to filter TE out of DARFMTEA in row 3 and TERS45 in row 4. Please see my code below. Sub ExtractWorkTypInfo() Dim ws1 As Worksheet Dim wsNew As Worksheet Dim rng As Range Dim r As Integer Dim c As Range Set ws1 = Sheets("Summary") Set rng = Range("Database") 'Create a list of Tank Criteria 'This is where I copy my range List to Column W. 'This list contains things like TE,RF, etc.. up to 30 items. 'I put in the header name in row one. NameCrit 'ws1.Columns("W:W").Copy _ ' Destination:=Range("Z1") '- only if you use the full list ws1.Columns("W:W").AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=Range("U1"), Unique:=True r = Cells(Rows.Count, "U").End(xlUp).Row 'set up Criteria Area Range("W1").Value = Range("A1").Value For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = c.Value 'add new sheet (if required) 'and run advanced filter If WksExists(c.Value) Then Sheets(c.Value).Cells.Clear rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=Sheets(c.Value).Range("A1"), _ Unique:=False Else Set wsNew = Sheets.Add wsNew.Move After:=Worksheets(Worksheets.Count) wsNew.Name = c.Value rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=wsNew.Range("A1"), _ Unique:=False End If Next ws1.Select ws1.Columns("U:W").Delete End Sub Function WksExists(wksName As String) As Boolean On Error Resume Next WksExists = CBool(Len(Worksheets(wksName).Name) 0) End Function The my source column is column A. Any help you provide would be greatly appreciated. -- By persisting in your path, though you forfeit the little, you gain the great. |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Change your code to include asterisks with the criteria, as Don
suggested. In your code, the revised line would be: For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = "*" & c.Value & "*" <===add asterisks DavidH56 wrote: Hello, I've been trying to data extract to new sheets using Debra Danglish's ExtractRep code. The code works great except for trying to filter out text that is contained within cells sometimes behind other text. For instance I want to filter TE out of DARFMTEA in row 3 and TERS45 in row 4. Please see my code below. Sub ExtractWorkTypInfo() Dim ws1 As Worksheet Dim wsNew As Worksheet Dim rng As Range Dim r As Integer Dim c As Range Set ws1 = Sheets("Summary") Set rng = Range("Database") 'Create a list of Tank Criteria 'This is where I copy my range List to Column W. 'This list contains things like TE,RF, etc.. up to 30 items. 'I put in the header name in row one. NameCrit 'ws1.Columns("W:W").Copy _ ' Destination:=Range("Z1") '- only if you use the full list ws1.Columns("W:W").AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=Range("U1"), Unique:=True r = Cells(Rows.Count, "U").End(xlUp).Row 'set up Criteria Area Range("W1").Value = Range("A1").Value For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = c.Value 'add new sheet (if required) 'and run advanced filter If WksExists(c.Value) Then Sheets(c.Value).Cells.Clear rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=Sheets(c.Value).Range("A1"), _ Unique:=False Else Set wsNew = Sheets.Add wsNew.Move After:=Worksheets(Worksheets.Count) wsNew.Name = c.Value rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=wsNew.Range("A1"), _ Unique:=False End If Next ws1.Select ws1.Columns("U:W").Delete End Sub Function WksExists(wksName As String) As Boolean On Error Resume Next WksExists = CBool(Len(Worksheets(wksName).Name) 0) End Function The my source column is column A. Any help you provide would be greatly appreciated. -- Debra Dalgleish Contextures www.contextures.com/tiptech.html Blog: http://blog.contextures.com |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thank you both Debra and Joel fo your response. I will test it and get back
with you on the results. Once Again, Thank you. -- By persisting in your path, though you forfeit the little, you gain the great. "Debra Dalgleish" wrote: Change your code to include asterisks with the criteria, as Don suggested. In your code, the revised line would be: For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = "*" & c.Value & "*" <===add asterisks DavidH56 wrote: Hello, I've been trying to data extract to new sheets using Debra Danglish's ExtractRep code. The code works great except for trying to filter out text that is contained within cells sometimes behind other text. For instance I want to filter TE out of DARFMTEA in row 3 and TERS45 in row 4. Please see my code below. Sub ExtractWorkTypInfo() Dim ws1 As Worksheet Dim wsNew As Worksheet Dim rng As Range Dim r As Integer Dim c As Range Set ws1 = Sheets("Summary") Set rng = Range("Database") 'Create a list of Tank Criteria 'This is where I copy my range List to Column W. 'This list contains things like TE,RF, etc.. up to 30 items. 'I put in the header name in row one. NameCrit 'ws1.Columns("W:W").Copy _ ' Destination:=Range("Z1") '- only if you use the full list ws1.Columns("W:W").AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=Range("U1"), Unique:=True r = Cells(Rows.Count, "U").End(xlUp).Row 'set up Criteria Area Range("W1").Value = Range("A1").Value For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = c.Value 'add new sheet (if required) 'and run advanced filter If WksExists(c.Value) Then Sheets(c.Value).Cells.Clear rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=Sheets(c.Value).Range("A1"), _ Unique:=False Else Set wsNew = Sheets.Add wsNew.Move After:=Worksheets(Worksheets.Count) wsNew.Name = c.Value rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=wsNew.Range("A1"), _ Unique:=False End If Next ws1.Select ws1.Columns("U:W").Delete End Sub Function WksExists(wksName As String) As Boolean On Error Resume Next WksExists = CBool(Len(Worksheets(wksName).Name) 0) End Function The my source column is column A. Any help you provide would be greatly appreciated. -- Debra Dalgleish Contextures www.contextures.com/tiptech.html Blog: http://blog.contextures.com |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks you so much Debra,
This works to perfection. Thank you for your expertise and your time. -- By persisting in your path, though you forfeit the little, you gain the great. "Debra Dalgleish" wrote: Change your code to include asterisks with the criteria, as Don suggested. In your code, the revised line would be: For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = "*" & c.Value & "*" <===add asterisks DavidH56 wrote: Hello, I've been trying to data extract to new sheets using Debra Danglish's ExtractRep code. The code works great except for trying to filter out text that is contained within cells sometimes behind other text. For instance I want to filter TE out of DARFMTEA in row 3 and TERS45 in row 4. Please see my code below. Sub ExtractWorkTypInfo() Dim ws1 As Worksheet Dim wsNew As Worksheet Dim rng As Range Dim r As Integer Dim c As Range Set ws1 = Sheets("Summary") Set rng = Range("Database") 'Create a list of Tank Criteria 'This is where I copy my range List to Column W. 'This list contains things like TE,RF, etc.. up to 30 items. 'I put in the header name in row one. NameCrit 'ws1.Columns("W:W").Copy _ ' Destination:=Range("Z1") '- only if you use the full list ws1.Columns("W:W").AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=Range("U1"), Unique:=True r = Cells(Rows.Count, "U").End(xlUp).Row 'set up Criteria Area Range("W1").Value = Range("A1").Value For Each c In Range("U2:U" & r) 'add the tank name to the criteria area ws1.Range("W2").Value = c.Value 'add new sheet (if required) 'and run advanced filter If WksExists(c.Value) Then Sheets(c.Value).Cells.Clear rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=Sheets(c.Value).Range("A1"), _ Unique:=False Else Set wsNew = Sheets.Add wsNew.Move After:=Worksheets(Worksheets.Count) wsNew.Name = c.Value rng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Summary").Range("W1:W2"), _ CopyToRange:=wsNew.Range("A1"), _ Unique:=False End If Next ws1.Select ws1.Columns("U:W").Delete End Sub Function WksExists(wksName As String) As Boolean On Error Resume Next WksExists = CBool(Len(Worksheets(wksName).Name) 0) End Function The my source column is column A. Any help you provide would be greatly appreciated. -- Debra Dalgleish Contextures www.contextures.com/tiptech.html Blog: http://blog.contextures.com |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You're welcome, and thanks for letting me know that it worked.
DavidH56 wrote: Thanks you so much Debra, This works to perfection. Thank you for your expertise and your time. -- Debra Dalgleish Contextures www.contextures.com/tiptech.html Blog: http://blog.contextures.com |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Advanced Filter Problem | Excel Discussion (Misc queries) | |||
Advanced Filter problem | Excel Discussion (Misc queries) | |||
Problem using Advanced filter | Excel Discussion (Misc queries) | |||
Advanced Filter problem | Excel Programming | |||
Problem in using Advanced Filter | Excel Programming |