簡體   English   中英

宏/VBA:根據列中的值清除行中的單元格,並循環遍歷整列

[英]Macro/VBA: Clear cells in a row based on values in a column, and loop through entire column

我正在嘗試在 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

我修改了它以滿足我的需要,但它只適用於第一行。 我需要一些幫助讓它循環遍歷第一列中的每一行。

感謝您的幫助。

我正在嘗試在 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

試試這個:

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. 祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM