簡體   English   中英

刪除任何值大於特定單元格值的單元格

[英]Delete any cells with values greater than specific cell value

我想為以下內容創建宏:

對於每一行,如果C3:ACP3范圍中的單元格值>= ACU3值,我想將該單元格值替換為空白。 我想對每一行都執行此操作,並且每次宏應引用該行的ACU列中的值時。

嘗試這個:

Sub makeBlank()

Dim r As Range
Set r = Excel.ThisWorkbook.Sheets("Sheet1").Range("C3:ACP3")

Dim v As Double
v = Excel.ThisWorkbook.Sheets("Sheet1").Range("ACU3").Value

Dim c
For Each c In r
    If c.Value >= v Then
        c.Value = ""
    End If
Next c

End Sub

編輯

我懷疑使用數組會更快:

Sub makeBlank2()

Dim v
v = Excel.ThisWorkbook.Sheets("Sheet1").Range("ACU3").Value

Dim Arr() As Variant
Arr = Sheet1.Range("C3:ACP3")

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("C3:ACP3") = Arr

End Sub

嘗試這個:

Sub FindDelete()

Dim ACU_Val As Double
Dim cl As Range
Dim rw As Long

    For rw = 1 To Rows.Count
        If Range("ACU" & rw).Value = "" Then Exit For

        ACU_Val = Range("ACU" & rw).Value

        For Each cl In Range("C" & rw & ":ACP" & rw)
            If cl.Value >= ACU_Val Then cl.Value = ""
        Next cl
    Next

End Sub

簡單:

Dim myCell As Range
numberOfRows = 1000

For i = 0 To numberOfRows 
    Dim myRow As Range

    Set myRow = [C3:ACP3].Offset(i, 0)
    bound = Intersect([acu3].EntireColumn, myRow.EntireRow) 

    For Each myCell In myRow
        If myCell >= bound Then myCell = ""
    Next
Next

您需要遍歷所需的單元格范圍,對於每個單元格的內容超出同一行ACU列中閾值的每個單元格,只需清除其內容即可。

For Each c In Range("C3:ACP3")
  If c.Value >= Cells(c.Row, "ACU") Then
    c.clearContents
  End If
Next c

暫無
暫無

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

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