以下是我的程序的一部分,它具有下列功能
它将查看列K和列L并根据组合创建制表符。例如,如果K列的单元格值为“Apple”,而L列的单元格值为“Orange”,则它将创建一个标签1)Apple - Orange当列没有不同的值时,运行时错误13
新选项卡将包含具有此组合的所有行 因此,一次完成宏的运行,整个数据将根据K-L组合划分到不同的选项卡
我的问题是当整列K或整列L只有一个值时,会给出运行时错误。例如,如果整个K列有10行,并且所有列k个单元格都具有值Apple,则会发生错误。这同样适用于列L.
Dim m As Integer
Dim area As Range
Count = Range("K:K").SpecialCells(xlLastCell).Row
ActiveSheet.Range("K2:K" & Count).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=ActiveSheet.Range("Z2"), Unique:=True
Columns(26).RemoveDuplicates Columns:=Array(1)
Count1 = Range("L:L").SpecialCells(xlLastCell).Row
ActiveSheet.Range("L2:L" & Count1).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=ActiveSheet.Range("Y2"), Unique:=True
Columns(25).RemoveDuplicates Columns:=Array(1)
Dim arrayv As String
Dim Text1 As String
Dim arrayv1 As String
last = Range("Z2").End(xlDown).Row
arrayv = WorksheetFunction.Transpose(Sheets(1).Range("Z2:Z" & last).Value)
last1 = Range("Y2").End(xlDown).Row
arrayv1 = WorksheetFunction.Transpose(Sheets(1).Range("Y2:Y" & last1).Value)
Columns(26).EntireColumn.Delete
Columns(25).EntireColumn.Delete
Dim i As Long, j As Long
Dim flag As Variant
flag = 1
A = 1
s = 2
For c = 1 To UBound(arrayv1)
For t = 1 To UBound(arrayv)
Sheets.Add().Name = "Sheet" & s
ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets.Count)
With Worksheets("Sheet1")
j = 2
.Rows(1).Copy Destination:=Worksheets("Sheet" & s).Range("A" & 1)
flag = 1
For i = 2 To Count
If .Cells(i, 11).Value = arrayv(t) Then
If .Cells(i, 12).Value = arrayv1(c) Then
Text = .Cells(i, 15).Value
flag = 0
.Rows(i).Copy Destination:=Worksheets("Sheet" & s).Range("A" & j)
j = j + 1
End If
End If
Next i
If flag = 1 Then
Sheets("Sheet" & s).Delete
Else
Text1 = Left(Text, 4)
错误线时K列只有一个值
arrayv = WorksheetFunction.Transpose(Sheets(1).Range("Z2:Z" & last).Value)
错误线时L列只有一个值
arrayv1 = WorksheetFunction.Transpose(Sheets(1).Range("Y2:Y" & last1).Value)
它看起来像* last *和/或* last1 *引用1,048,576行。试图'.Transpose' Y2:Y1048576超过变调功能限制(我认为这为65,536)。 – Jeeped
更改您的阵列不是变体的字符串 –