Vba 使用两个数组对表进行排序
请耐心等待我解释这个困境。我正在尝试编写一个宏来帮助我对下表进行排序:Vba 使用两个数组对表进行排序,vba,excel,excel-2010,Vba,Excel,Excel 2010,请耐心等待我解释这个困境。我正在尝试编写一个宏来帮助我对下表进行排序: Sale ID S Class B Class Balance Month Rate 9 P F 900 60 5 Sale ID S Class B Class Balance Month Rate 12 M A 1200 45 8 Sale ID S Class B Class Balance Month Rate 13 Sp B 1300 40 9 Sa
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
并尝试将销售ID排序到另一个工作表(在同一工作簿中),其中包含以下预格式化的表格:
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
最终结果应如下图所示,我需要做的只是填写sales ID和sales ID列右侧的公式计算或执行查找:
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
问题是,我的团队一直在手动填写表格,或者使用排序功能的组合来手动填写表格。问题是,当我们有10000多个销售ID并且没有自动化时,这可能是一个痛苦。我试图编写此代码以帮助我的团队,但我有限的vba知识并没有帮助我-非常感谢任何帮助:
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
编辑:我对开尔文的代码做了一些修改(谢谢@Kelvin!),我想澄清的是,我所要做的就是根据预格式化表格的位置将那些销售ID的特殊值粘贴到我的“表格”选项卡中。请参阅下面的新图像以及重新设置的代码。注意“我的表格”选项卡中没有销售ID的公式(我不清楚是我的错)
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
最后一点注意:我试图解决的最后一件事是扫描两个范围,并将唯一对过滤到一个数组中,以使下面的数组CFValues动态-如果您知道如何做得比我好,请帮助
Option Explicit
Sub SortNCopy2TablesV2()
Dim CFValues As Variant
Dim r As Integer
Dim i As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim CombStr As Variant
Const startRow As Long = 7 'kelvin added
CFValues = Array("P A", "P B", "P C", "P F", "M A", "SP A", "SP B", "SP C")
Set ws1 = Worksheets("Cashflow")
Set ws2 = Worksheets("Tables")
r = startRow 'kelvin changed
'kelvin added
Application.ScreenUpdating = False
On Error Resume Next
For i = LBound(CFValues) To UBound(CFValues)
Worksheets.Add
ActiveSheet.Name = CFValues(i)
If Err.Number = 1004 Then
Application.DisplayAlerts = False
Worksheets(CFValues(i)).Cells.Clear
ActiveSheet.Delete
Application.DisplayAlerts = True
End If
Next i
On Error GoTo 0
With ws1 'kelvin added
Do Until .Range("C" & r).Value = ""
CombStr = .Range("C" & r).Text + " " + .Range("D" & r).Text 'kelvin changed
For i = LBound(CFValues) To UBound(CFValues)
If StrComp(CombStr, CFValues(i), vbTextCompare) = 0 Then 'kelvin changed
'kelvin added 1 lines of code:
.Range("B" & r).Copy _
Worksheets(CFValues(i)).Range("B" & Application.WorksheetFunction.CountA(Worksheets(CFValues(i)).Range("B:B")) + 1)
End If
Next i
r = r + 1
Loop
End With
'kelvin added
Dim nextRow As Long
Dim tempRow As Long
Dim numRows As Long
nextRow = 5
For i = LBound(CFValues) To UBound(CFValues)
tempRow = Application.WorksheetFunction.CountA(Worksheets(CFValues(i)).Range("B:B"))
If tempRow > 0 Then
numRows = Application.WorksheetFunction.CountA(Worksheets(CFValues(i)).Range("B:B"))
ws2.Range("B" & nextRow + 1).EntireRow.Resize(numRows).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ws2.Range("C" & nextRow & ":" & "F" & nextRow + numRows).FillDown
Worksheets(CFValues(i)).Range("B2").CurrentRegion.Copy ws2.Range("B" & nextRow + 1)
ws2.Range("B" & nextRow + 2 + tempRow) = CFValues(i)
nextRow = nextRow + tempRow + 5
End If
Next i
Application.ScreenUpdating = True
End Sub
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
根据您的代码,第一个表的标题从单元格B6开始,第一行数据从B7开始。通过修改宏,我可以进行排序,并将结果放在表格工作表上。然而,我不能为你计算净现值,因为我不知道确切的公式。请查找代码:
Option Explicit
Sub SortNCopy2TablesV2()
Dim CFValues As Variant
'Dim InsertRow As Variant
Dim R As Integer
Dim i As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim CombStr As Variant
Const startRow As Long = 7 'kelvin added
CFValues = Array("P A", "P B", "P C", "P F", "M A", "SP A", "SP B", "SP C")
' InsertRow = Array(6, 11, 16, 21, 26, 31, 36, 41)
Set ws1 = Worksheets("Cashflow")
Set ws2 = Worksheets("Tables")
R = startRow 'kelvin changed
'kelvin added
Application.ScreenUpdating = False
On Error Resume Next
For i = LBound(CFValues) To UBound(CFValues)
Worksheets.Add
ActiveSheet.Name = CFValues(i)
If Err.Number = 1004 Then
Application.DisplayAlerts = False
Worksheets(CFValues(i)).Cells.Clear
ActiveSheet.Delete
Application.DisplayAlerts = True
End If
Next i
On Error GoTo 0
With ws1 'kelvin added
'org: Do Until ws1.Range("C" & R).Value = ""
Do Until .Range("C" & R).Value = ""
'org: CombStr = ws1.Range("C" & R).Text + "" + ws1.Range("D" & R).Text
CombStr = .Range("C" & R).Text + " " + .Range("D" & R).Text 'kelvin changed
For i = LBound(CFValues) To UBound(CFValues)
'org: If StrComp(CombStr, CFValues(i), vbTextCompare) Then
If StrComp(CombStr, CFValues(i), vbTextCompare) = 0 Then 'kelvin changed
'Return value of first insert row in InsertRow[] array -
' i.e. if P A, then it should return row 6 for insertion, if P B, then row 11, etc.
'insert new row, copying and pasting the formulas down and copying the sales ID
'Insert Sales ID value into Table tab
'org: ActiveCell.Offset(1, 0).EntireRow.Copy
'org: ActiveCell.Offset(2, 0).EntireRow.Insert Shift:=xlDown
'org: ActiveCell.Offset(2, 0).EntireRow.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
'org: Application.CutCopyMode = False
'org: ws1.Range("B" & R).Value = ws2.Range("B" & InsertRow(i) + 1).Value
'kelvin added 1 lines of code:
.Range("A" & R).EntireRow.Copy _
Worksheets(CFValues(i)).Range("A" & Application.WorksheetFunction.CountA(Worksheets(CFValues(i)).Range("B:B")) + 1)
'decrement InsertRow[] array, so that the
'program always knows where to find the next tables for insertion
'Else
End If
Next i
R = R + 1
Loop
End With
'kelvin added
ws2.Cells.Clear
Dim nextRow As Long
Dim tempRow As Long
nextRow = startRow
For i = LBound(CFValues) To UBound(CFValues)
tempRow = Application.WorksheetFunction.CountA(Worksheets(CFValues(i)).Range("B:B"))
If tempRow > 0 Then
ws1.Range("A" & startRow - 1).EntireRow.Copy ws2.Range("A" & nextRow - 1)
Worksheets(CFValues(i)).Range("B2").CurrentRegion.Copy ws2.Range("B" & nextRow)
ws2.Range("A" & nextRow + tempRow) = CFValues(i)
nextRow = nextRow + tempRow + 5
End If
Next i
Application.ScreenUpdating = True
End Sub
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
(哦…我无法发布图像。请查找输入和输出的粘贴文本)
样本输入:
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
销售ID S B类余额月利率
1 P A 100 20 5
2 P A 200 25 4
3 P A 300 30 3
4 SP C 400 35 2
5 SP C 500 40 1
6米C 600 45 2
7米B 700 50 3
8米B 800 55 4
9 P F 900 60 5
10 SP F 1000 55 6
11米F 1100 50 7
12米A 1200 45 8
13 Sp B 1300 40 9
14 Sp C 1400 35 10
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
样本输出:
Sale ID S Class B Class Balance Month Rate
1 P A 100 20 5
2 P A 200 25 4
3 P A 300 30 3
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
p A
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
p F
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
我是
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
SP B
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
SP C
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
请评论。谢谢。在我编写此代码时,我看到您收到了另一个答案,但无论如何我都会发布它。下面的代码应粘贴到表格工作表的vba部分。然后,您应该在该工作表(在“开发人员”选项卡中)上创建一个按钮,并将其指定给宏StartSortClick
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
此代码假定存在以下情况,必须对不正确的情况进行相应更改。如果你在下面评论我的假设是错误的,我可以为你更新,或者你可以自己做
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
编辑:
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
嗯。在将单元格值写入表格工作表之前,使用数组存储单元格值的Redid代码。它的速度稍快,15000排1分57对2分22。这是替代代码。如果您希望使用此公式,请更改按钮单击以调用此公式。注意:这段代码可能有点不整洁,因为我现在需要注销stackExchange
Sale ID S Class B Class Balance Month Rate
9 P F 900 60 5
Sale ID S Class B Class Balance Month Rate
12 M A 1200 45 8
Sale ID S Class B Class Balance Month Rate
13 Sp B 1300 40 9
Sale ID S Class B Class Balance Month Rate
4 SP C 400 35 2
5 SP C 500 40 1
14 Sp C 1400 35 10
Private Sub SortNCopyTables2()
Application.ScreenUpdating = False
Dim saleIDs() As Variant
Dim sellerClass() As Variant
Dim bucketClass() As Variant
Dim cashFlowSheet As Worksheet
Set cashFlowSheet = Worksheets("CashFlow")
Dim lastSaleIDRow As Long
lastSaleIDRow = cashFlowSheet.Cells.SpecialCells(xlCellTypeLastCell).row
saleIDs = cashFlowSheet.Range("A2:A" & lastSaleIDRow).Value
sellerClass = cashFlowSheet.Range("B2:B" & lastSaleIDRow).Value
bucketClass = cashFlowSheet.Range("C2:C3" & lastSaleIDRow).Value
Dim classPairsArray() As Variant
Dim classPairs() As String
ReDim Preserve classPairs(0)
ReDim Preserve classPairsArray(0)
Dim size As Long
size = 0
Dim saleID As String
Dim tempArray() As String
For counter = 1 To UBound(saleIDs, 1)
sellerBucketString = sellerClass(counter, 1) + " & " + bucketClass(counter, 1)
If UBound(Filter(classPairs, sellerBucketString)) < 0 Then
ReDim Preserve classPairs(size)
classPairs(size) = sellerBucketString
ReDim Preserve classPairsArray(size)
ReDim Preserve tempArray(0)
tempArray(0) = sellerBucketString
classPairsArray(size) = tempArray
size = size + 1
End If
Dim position As Long
For i = 0 To UBound(classPairsArray)
tempArray = classPairsArray(i)
If sellerBucketString = tempArray(0) Then
tempArray = classPairsArray(i)
ReDim Preserve tempArray(UBound(tempArray) + 1)
tempArray(UBound(tempArray)) = saleIDs(counter, 1)
classPairsArray(i) = tempArray
Exit For
End If
Next i
Next counter
'loop through array and write to worksheet
Dim tablesSheet As Worksheet
Set tablesSheet = Worksheets("Tables")
'clear the tableSheet, just in case
tablesSheet.Rows(10 & ":" & tablesSheet.Rows.Count).Clear
Dim SaleIDRange, BalanceRange, MonthlyRange, RateRange As Range 'Change the letters and starting rows as necessary
Set SaleIDRange = cashFlowSheet.Range("A2:A" & cashFlowSheet.Cells.SpecialCells(xlCellTypeLastCell).row)
Set BalanceRange = cashFlowSheet.Range("D2:D" & cashFlowSheet.Cells.SpecialCells(xlCellTypeLastCell).row)
Set MonthlyRange = cashFlowSheet.Range("E2:E" & cashFlowSheet.Cells.SpecialCells(xlCellTypeLastCell).row) ' not used now but assume is used for npv / price calcs
Set RateRange = cashFlowSheet.Range("F2:F" & cashFlowSheet.Cells.SpecialCells(xlCellTypeLastCell).row)
Dim tRow As Long
tRow = 10 ' this is where I start to build my table
Dim row As Long
Dim tempSumRow As Range
For i = 0 To UBound(classPairsArray)
Dim tableStartRow As Long
tableStartRow = tRow + 1
Dim tableSellerBucketGroup As String
Dim tableArray() As String
tableArray = classPairsArray(i)
With tablesSheet
.Cells(tRow, 1).Value = "Sale ID"
.Cells(tRow, 1).Font.Underline = xlUnderlineStyleSingleAccounting
.Cells(tRow, 2).Value = "NPV"
.Cells(tRow, 2).Font.Underline = xlUnderlineStyleSingleAccounting
.Cells(tRow, 3).Value = "Price"
.Cells(tRow, 3).Font.Underline = xlUnderlineStyleSingleAccounting
.Cells(tRow, 4).Value = "Balance"
.Cells(tRow, 4).Font.Underline = xlUnderlineStyleSingleAccounting
.Cells(tRow, 5).Value = "Rate"
.Cells(tRow, 5).Font.Underline = xlUnderlineStyleSingleAccounting
tRow = tRow + 1
For j = 1 To UBound(tableArray)
.Cells(tRow, 1).Value = tableArray(j)
'.Cells(tRow, 2).Value = ??? NPV formula?
'.Cells(tRow, 3).Value = ??? price formula?
.Cells(tRow, 4).Formula = "=INDEX(" + cashFlowSheet.Name + "!" + BalanceRange.Address + ",MATCH(A" + CStr(tRow) + "," + cashFlowSheet.Name + "!" + SaleIDRange.Address + ",0))"
.Cells(tRow, 4).NumberFormat = "$#,##0.00"
.Cells(tRow, 5).Formula = "=INDEX(" + cashFlowSheet.Name + "!" + RateRange.Address + ",MATCH(A" + CStr(tRow) + "," + cashFlowSheet.Name + "!" + SaleIDRange.Address + ",0))"
.Cells(tRow, 5).NumberFormat = "0.0 %"
tRow = tRow + 1
Next j
.Cells(tRow, 1).Value = tableArray(0)
.Cells(tRow, 1).Font.Bold = True
.Cells(tRow, 2).Formula = "=SUM(B" + CStr(tableStartRow) + ":B" + CStr(tRow - 1) + ")"
.Cells(tRow, 3).Formula = "=AVERAGE(C" + CStr(tableStartRow) + ":C" + CStr(tRow - 1) + ")"
.Cells(tRow, 4).Formula = "=SUM(D" + CStr(tableStartRow) + ":D" + CStr(tRow - 1) + ")"
.Cells(tRow, 5).Formula = "=AVERAGE(E" + CStr(tableStartRow) + ":E" + CStr(tRow - 1) + ")"
Set tempSumRow = tablesSheet.Range("A" + CStr(tRow) + ":E" + CStr(tRow))
With tempSumRow.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With tempSumRow.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
End With
tRow = tRow + 2
End With
Next i
tablesSheet.Activate
Application.ScreenUpdating = True
End Sub
私有子SortNCopyTables2()
Application.ScreenUpdating=False
Dim saleIDs()作为变量
Dim sellerClass()作为变量
Dim bucketClass()作为变量
将现金流表设置为工作表
设置现金流表=工作表(“现金流”)
黯淡的最后一缕光,如长
lastSaleIDRow=现金流表.Cells.SpecialCells(xlCellTypeLastCell).row
saleIDs=cashFlowSheet.Range(“A2:A”和lastSaleIDRow).值
sellerClass=现金流量表。范围(“B2:B”和lastSaleIDRow)。值
bucketClass=现金流量表。范围(“C2:C3”和lastSaleIDRow)。值
Dim CLASSPAIRASARRAY()作为变量
Dim classPairs()作为字符串
ReDim保留类对(0)
ReDim保留类对数组(0)
尺寸和长度一样小
大小=0
作为字符串的Dim saleID
Dim tempArray()作为字符串
对于计数器=1到uBond(saleIDs,1)
sellerBucketString=sellerClass(计数器,1)+“&”+bucketClass(计数器,1)
如果UBound(Filter(classPairs,sellerBucketString))<0,则
ReDim保留类对(大小)
类对(大小)=sellerBucketString
ReDim保留类对数组(大小)
ReDim保留临时数组(0)
tempArray(0)=sellerBucketString
ClassPairArray(大小)=临时数组
尺寸=尺寸+1
如果结束
暗位置与长位置相同
对于i=0到UBound(类成对排列)
tempArray=classpairsaray(i)
如果sellerBucketString=tempArray(0),则
tempArray=classpairsaray(i)
重拨保留临时数组(UBound(临时数组)+1)
tempArray(UBound(tempArray))=saleid(计数器,1)
ClassPairArray(i)=临时数组
退出
如果结束
接下来我
下一个柜台
'循环遍历数组并写入工作表
将工作表设置为工作表
Set tablesheet=工作表(“表”)
“清理桌子,以防万一
tablesheet.Rows(10&“:”&tablesheet.Rows.Count)。清除
Dim SaleIDRange,Ang