我的代码现在无法使用。我使用两个工作簿,在第一个工作簿中,我想创建一个概述列表,其中填充了第二个工作簿中的数据。
在复制粘贴过程之后,许多单元格为空或填充了" 0"。我想删除所有只用零或空填充的行。但是因为我仍然是一个begaenger并且如果两个条件都为真,就不能编写删除行的代码,我用#34; 0"填充空单元格。现在我试图删除所有专门用" 0"填充的行。
但是使用以下代码我得到了
"运行时错误9:下标超出范围"
以下区域也标记为黄色:If sn(j, 4) & sn(j, 5) & sn(j, 6) & sn(j, 7) & sn(j, 8) & sn(j, 9) = "000000" Then
。
wb1.Activate
ws1.Select
LR = Cells(Rows.Count, 3).End(xlUp).Row 'letzte Zeile der Spalte
Set Myrange = Range("D2:AO" & LR).SpecialCells(xlCellTypeBlanks) 'nur Leerzellen
Myrange.Formula = "0"
sn = Sheets(3).UsedRange
For j = 1 To UBound(sn)
If sn(j, 4) & sn(j, 5) & sn(j, 6) & sn(j, 7) & sn(j, 8) & sn(j, 9) = "000000" Then c00 = c00 & "|" & j
Next
If c00 <> "" Then
sn = Application.Index(sn, Application.Transpose(Split(Mid(c00, 2), "|")), [transpose(row(1:8))])
Sheets(3).UsedRange.ClearContents
Sheets(3).Cells(1).Resize(UBound(sn), UBound(sn, 2)) = sn
End If
Sheets(3)也是ws1,在将Sheets(3)更改为ws1后,我得到了#34;类型不匹配&#34;错误和行sn = Application.Index(sn, Application.Transpose(Split(Mid(c00, 2), "|")), [transpose(row(1:8))])
标记为黄色。我还会给当地人的窗户画一张照片。
主要任务应该是删除空单元格或单元格的行,就像在下一张图片上看到的那样(蓝色标记的行)。我的第一个编写的代码如下,但它的速度慢,因为它需要5分钟,有时一些行不会被删除。
祝你好运, Bamane
答案 0 :(得分:0)
就像dwirony说的那样,你需要重新思考如何实现这一目标。由于我不知道你在每一栏中有什么类型的数据,这是我能为你提供的最好的例子。您不需要在空单元格中插入&#34; 0&#34; s。最好的办法是使用辅助列(AP,如果它是空的)来汇总从D2到AO2的每一行中的数据。为&#34; 0&#34;添加过滤器在列AP中,然后删除所有可见单元格。您可能需要修改以下代码,以满足您的问题中未确定的任何要求。
Dim LR As Long
With ThisWorkbook.Sheets(3)
LR = Cells(Rows.Count, 3).End(xlUp).Row
.Range("AP2:AP" & LR).Formula = "=SUM(D2:AO2)"
.UsedRange.AutoFilter Field:=42, Criteria1:="0"
.Range("A2:A" & LR).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilterMode = False
End With