宏/ VBA:根据列中的值清除行中的单元格,并循环遍历整个列

时间:2015-06-13 02:03:11

标签: excel vba excel-vba

我正在尝试在excel中编写一个宏来识别行中的第一个值(A2),然后搜索行的其余部分以清除任何具有更大值的单元格(C2:DGA2)。我想设置它,使程序循环遍历列中的每一行(A2:A400),并清除相应的值。

我尝试使用以下代码,我从另一篇文章中修改过:

Sub clear_cell()
Dim v
v = Excel.ThisWorkbook.Sheets("TOP LINE").Range("B2").Value

Dim Arr() As Variant
Arr = Sheet1.Range("C2:DGJ2")

Dim r, c As Long
For r = 1 To UBound(Arr, 1)
    For c = 1 To UBound(Arr, 2)
        If Arr(r, c) > v Then
            Arr(r, c) = ""
        End If
    Next c
Next r

Sheet1.Range("C2:DGJ2") = Arr

End Sub

我修改它以满足我的需要,但它只适用于第一行。我需要一些帮助让它循环遍历第一列中的每一行。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

  

我试图在excel中编写一个宏来识别行中的第一个值(A2),然后搜索行的其余部分以清除任何具有更大值的单元格(C2:DGA2)。

从上面的陈述中,我假设所有范围都在同一张表中。如果我进行一些更改,您的代码将适用于我。见这个

Sub clear_cell()
    Dim i As Long, j As Long
    Dim Arr

    '~~> Set Range here
    Arr = Sheet1.Range("A2:DGJ400").Value

    For i = 1 To UBound(Arr, 1)
        For j = 2 To UBound(Arr, 2)
            If Arr(i, j) > Arr(i, 1) Then
                Arr(i, j) = ""
            End If
        Next j
    Next i

    '~~> Write back to the sheet
    Sheet1.Range("A2:DGJ400") = Arr
End Sub

答案 1 :(得分:0)

尝试一下:

Sub clear_cell()
    x = 2
    Do While x <= 400
    Y = Range(Cells(x, 2), Cells(x, 2)).Value
    If Y < 100 Then Range(Cells(x, 2), Cells(x, 2)).FormulaR1C1 = ""
    x = x + 1
    Loop
End Sub

2是列范围,在这种情况下是B.祝你好运。