If cell in Range("H1:H104000") is "" Then
Range("H1:H104000) = LEFT(Range("D1:D104000), 3
End If
這是我嘗試但沒有成功的代碼。
uj5u.com熱心網友回復:
你錯過了回圈。您需要撰寫回圈來遍歷單元格集合,即使將單個范圍與范圍集合進行比較,代碼也無法隱式執行此操作。
此外,要比較值,請使用=. 該Is運算子僅用于物件。
Dim Cell As Range
For Each Cell In Range("H1:H104000").Cells
If Cell.Value = "" Then
Cell.Value = Right(Cell.Offset(0, -4).Value, 3)
End If
Next
一旦您遍歷 H 列。參考“當前行中的 D 列”的一種簡單方法是使用Offset,它將回傳一個相對于給定起始位置的單元格。在這種情況下,我們只需要向左移動 4 列,所以我這樣做.Offset(0,-4)
uj5u.com熱心網友回復:
你可能會考慮
- 將與作業表相關的公式評估分配給變體資料欄位陣列
data和 - 寫
data回參考的列H而不是回圈遍歷給定的范圍;這種方法只持續幾分之一秒,而通過VBA回圈遍歷每個單元格需要幾秒鐘:
Option Explicit ' head of code module
Sub ExampleCall()
Dim t As Double: t = Timer ' start timer
Dim ws As Worksheet
Set ws = Sheet1 ' << change to your project's sheet Code(Name)
Dim data As Variant ' provide for a 1-based 2-dim datafield array
'assign worksheet related evaluation to data
data = ws.Evaluate("=If(IsBlank(H2:H104000),Right(D2:D104000,3),H2:H104000)")
'write to target
ws.Range("H2").Resize(UBound(data), 1).Value = data
Debug.Print Format(Timer - t, "0.00 secs") ' 0.20 secs
End Sub
進一步說明與作業表相關的評估通過ws.Evaluate(...)保證完全限定的范圍參考,而Evaluate(...)需要更詳細的范圍指示,如公式字串Sheet1!H2:H104000或進一步的文本插入ws.Range("H2:H104000").Address(External:=True)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/342814.html
下一篇:基于多個條件的VBA過濾
