Dave_george
New Member
- Joined
- Jul 20, 2023
- Messages
- 32
- Office Version
- 2021
- 2016
- 2013
- Platform
- Windows
I am typing to makes changes to the below code. I have 4 different categories in column C. ( D002,D004,D005 and 2* codes). I want D002 and 2* in one sheet. D004 and D005 filtered in another sheet.
CUSTOMER_ID | Names | HUB | WAVE | CASES | VOLUME | WEIGHT | SEG | SHIPMENT_GROUP |
1002 | n/a | D002 | 4 | 584 | 7.58 | 3,284.79 | STD | |
1003 | n/a | D002 | 4 | 680 | 8.14 | 4,063.38 | STD | |
1007 | n/a | D004 | 4 | 607 | 8.84 | 5,798.22 | STD | |
1009 | n/a | D002 | 4 | 207 | 2.93 | 1,332.82 | STD | |
1012 | n/a | D004 | 4 | 1,147.00 | 13.29 | 4,930.20 | STD | |
1134 | n/a | D005 | 4 | 152 | 2.04 | 779.16 | STD | |
1171 | n/a | D005 | 4 | 365 | 5.03 | 1,605.54 | STD | |
1180 | n/a | D005 | 4 | 139 | 2.4 | 740.93 | STD | |
1350 | n/a | D005 | 4 | 688 | 10.89 | 7,074.39 | STD | |
1361 | n/a | D005 | 4 | 265 | 4.86 | 1,356.40 | STD | |
1364 | n/a | D005 | 4 | 401 | 5.01 | 2,080.61 | STD | |
1376 | n/a | D005 | 4 | 162 | 1.82 | 686.26 | STD | |
1377 | n/a | D005 | 4 | 409 | 6.53 | 3,500.15 | STD | |
2567 | n/a | 2567 | 4 | 78 | 0.93 | 422.57 | STD | |
2605 | n/a | 2605 | 4 | 370 | 6.79 | 2,482.73 | STD | |
2640 | n/a | 2640 | 4 | 66 | 2.04 | 378.43 | STD | |
2641 | n/a | 2641 | 4 | 68 | 0.5 | 292.69 | STD | |
2663 | n/a | 2663 | 4 | 54 | 0.52 | 255.28 | STD | |
2695 | n/a | 2695 | 4 | 54 | 1.27 | 279.84 | STD | |
2719 | n/a | 2719 | 4 | 160 | 4 | 903.73 | STD | |
2722 | n/a | 2722 | 4 | 748 | 13.57 | 6,164.86 | STD | |
2737 | n/a | 2737 | 4 | 61 | 0.45 | 361.51 | STD |
VBA Code:
Public gsDataTbl As String
Public gcolCtry As Collection
Public Const kCtryCOL = "C"
Public Sub HUB_FILTER()
Dim sCtry
Dim wsTarg As Worksheet
Dim iCtryCol As Integer, i As Integer
gsDataTbl = ActiveSheet.Name
iCtryCol = Asc(kCtryCOL) - 64
CollectCountries
For i = 1 To gcolCtry.Count
sCtry = gcolCtry(i)
Selection.AutoFilter
ActiveSheet.UsedRange.AutoFilter Field:=iCtryCol, Criteria1:=sCtry
ActiveSheet.UsedRange.Select
Range(kCtryCOL & "1").Activate
Selection.Copy
Sheets.Add After:=ActiveSheet
Set wsTarg = ActiveSheet
ActiveSheet.Paste
Application.CutCopyMode = False
wsTarg.Activate
wsTarg.Name = sCtry
Sheets(gsDataTbl).Select
Selection.AutoFilter
Next
Set wsTarg = Nothing
Set gcolCtry = Nothing
End Sub
Private Sub CollectCountries()
Set gcolCtry = New Collection
Dim sCtry As String
Columns(kCtryCOL & ":" & kCtryCOL).Select
Selection.Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$A$1000").RemoveDuplicates Columns:=1, Header:=xlYes
Range("A2").Select
While ActiveCell.Value <> ""
sCtry = ActiveCell.Value
gcolCtry.Add sCtry, sCtry
ActiveCell.Offset(1, 0).Select
Wend
Sheets(gsDataTbl).Select
Range("A1").Select