我正在处理一个 excel 文件,在 Sheet1 中,我需要比较 C 列和 E 列。如果在 Sheet 1 的任何行中,C 列值 > E 列值,那么我需要删除 Sheet 2 中的某一列。
例如:如果 C2>E2(sheet1),我必须删除 Sheet 2 的 A2 到 A3000 如果 C3>E3(sheet1),我必须删除 Sheet 2 的 B2 到 B3000 等等。
有时,C 和 E 列中可能会出现 N/A。但是,我必须忽略这些单元格,以防出现任何错误。
我尝试过此代码,但它并没有删除工作表 2 中的列。我做错了什么?
Sub sbVBS_To_Delete_EntireColumn_C()
With ActiveWorkbook.Worksheets("Calculation")
'Worksheets("Calculation").Activate
Dim N As Long, i As Long
N = Cells(Rows.Count, "E").End(xlUp).Row
On Error Resume Next
For i = N To 2 Step -1
If Cells(i, "C").Value >= Cells(i, "E").Value Then
ActiveWorkbook.Worksheets("Input").Columns(i - 1).EntireColumn.Delete
End If
Next i
On Error GoTo 0
End With
End Sub
答案1
我现在使用的低效代码(运行良好)是:
Sub ClearRange()
Dim ws1, ws2 As Worksheet
Set wb = ThisWorkbook
'Sub sbVBS_To_Delete_EntireColumn_C()
With wb.Worksheets("Calculation")
'Worksheets("Calculation").Activate
Dim N As Long, i As Long
N = Cells(Rows.Count, "E").End(xlUp).Row
On Error Resume Next
For i = N To 2 Step -1
If Cells(i, "C").Value >= Cells(i, "E").Value Then
Set ws1 = wb.Sheets("Input")
'Clear the range
If i = 2 Then
ws1.Range("A2:A3000").Clear
End If
If i = 3 Then
ws1.Range("B2:B3000").Clear
End If
If i = 4 Then
ws1.Range("C2:C3000").Clear
End If
If i = 5 Then
ws1.Range("D2:D3000").Clear
End If
If i = 6 Then
ws1.Range("E2:E3000").Clear
End If
If i = 7 Then
ws1.Range("F2:F3000").Clear
End If
If i = 8 Then
ws1.Range("G2:G3000").Clear
End If
If i = 9 Then
ws1.Range("H2:H3000").Clear
End If
If i = 10 Then
ws1.Range("I2:I3000").Clear
End If
If i = 11 Then
ws1.Range("J2:J3000").Clear
End If
If i = 12 Then
ws1.Range("K2:K3000").Clear
End If
If i = 13 Then
ws1.Range("L2:L3000").Clear
End If
If i = 14 Then
ws1.Range("M2:M3000").Clear
End If
If i = 15 Then
ws1.Range("N2:N3000").Clear
End If
If i = 16 Then
ws1.Range("O2:O3000").Clear
End If
If i = 17 Then
ws1.Range("P2:P3000").Clear
End If
If i = 18 Then
ws1.Range("Q2:Q3000").Clear
End If
If i = 19 Then
ws1.Range("R2:R3000").Clear
End If
If i = 20 Then
ws1.Range("S2:S3000").Clear
End If
If i = 21 Then
ws1.Range("T2:T3000").Clear
End If
End If
Next i
On Error GoTo 0
End With
End Sub