如何通过忽略 N/A 值根据另一张表中的值删除一张表中的某列?

如何通过忽略 N/A 值根据另一张表中的值删除一张表中的某列?

我正在处理一个 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

相关内容