以下是我的程序的一部分,它执行以下功能
它将查看 K 列和 L 列并根据组合创建选项卡。例如,如果 K 列有一个单元格值“Apple”,L 列有一个单元格值“Orange”,它将创建一个选项卡 1) Apple - Orange
新选项卡将包含具有此组合的所有行
所以一旦宏运行完成,整个数据会按照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)
最佳答案
如果向下只有一个值 Y2 或 Z2,则使用 Range,End property与 xlDirection的 xlDown
将引用第 1,048,576 行。 WorksheetFunction.Transpose method限制为 65,536。任何超过此限制的行为都将导致,
Run-time error '13':
Type mismatch.
使用
xlUp
将最后一行搜索的方向更改为从底部向上查找.last = Range("Z" & rows.count).End(xlUp).Row
arrayv = WorksheetFunction.Transpose(Sheets(1).Range("Z2:Z" & last).Value)
last1 = Range("Y" & rows.count).End(xlUp).Row
arrayv1 = WorksheetFunction.Transpose(Sheets(1).Range("Y2:Y" & last1).Value)
关于excel - 列没有不同值时的运行时错误 13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113098/