![](/img/trans.png)
[英]Excel VBA - If a cell in column B contains a value then column A equals “value” BUT do not overwrite existing column A data
[英]Excel VBA - Update column A with a value if column B contains any value. If column B contains no values then do not run the macro
在我的場景中,我有四個列,即AD列。 如果B列包含任何值,則A列中的匹配行必須更新為包含預定值。 相同的宏應用於C和D列。我現在有代碼可以實現該結果:
Sub Update_Column_Based_On_Column_Value1()
On Error Resume Next
Dim ws As Worksheet
Dim lRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
lRow = .Range("B" & .Rows.Count).End(xlUp).Row
.Range("A1:A" & lRow).SpecialCells(xlCellTypeBlanks).Formula = "=If(B1<>"""",""PREDETERMINED VALUE"","""")"
.Range("A1:A" & lRow).Value = .Range("A1:A" & lRow).Value
End With
End Sub
當B列包含一個值時,宏將在A列的相應單元格中寫入“ PREDETERMINED VALUE”。
當列完全不包含任何值時,就會發生問題。 發生的是宏將把我的新值寫入整個數據集中幾乎所有的空白單元格。
預先感謝您的寶貴時間! 我很抱歉,如果我的問題有點笨拙,那么我對VBA還是很陌生。
在注釋部分中使用If WorksheetFunction.CountA(ws.Range("B:B")) = 1
來避免該問題是一個很好的嘗試,但是可能會有如下所述的異常。 使用各種方案(尤其是使用空白范圍)對它進行多次測試,以查看您是否每次都獲得期望的結果。
.SpecialCells
嘗試簡化代碼,但是有時.SpecialCells(xlCellTypeBlanks)
VBA函數無法按預期在Excel中工作 。
另外,不應盡可能使用On Error Resume Next
語句。 但是,如果必須,請確保盡快插入On Error GoTo 0
語句,因為您不想掩蓋其他錯誤。
可以使用For Each
循環代替.SpecialCells
來避免此問題。 因此,讓我們看一下它的外觀:
Sub Update_Column_Based_On_Column_Value1()
Dim ws As Worksheet, lRow As Long, r As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
lRow = .Range("B" & .Rows.Count).End(xlUp).Row
For Each r In .Range("A1:A" & lRow)
If IsEmpty(r) Then
r.Formula = "=If(B" & r.Row & "<>"""",""PREDETERMINED VALUE"","""")"
r = r.Value
End If
Next
End With
End Sub
這是大家的答案!
Sub Update_Column_Based_On_Column_Value_1()
On Error Resume Next
Dim ws As Worksheet
Dim lRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
If WorksheetFunction.CountA(ws.Range("B:B")) = 1 Then
Else
With ws
lRow = .Range("B" & .Rows.Count).End(xlUp).Row
.Range("A1:A" & lRow).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=If(LEN(RC2),""NEW TEXT HERE"", TEXT(,))"
.Range("A1:A" & lRow).Value = .Range("A1:A" & lRow).Value
End With
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.