2017-07-31 250 views
0

問題的標題可能有點令人困惑,但實質上我要做的是寫如果列B不爲空,則將值賦給列A.對於C到Q,必須重複此操作。如果B列中存在值,則現在的代碼會生成所需的結果。但是,如果B沒有值,那麼我的替換文本將填充A1:A目標範圍之外的各種空白單元格。這裏是我有的代碼:Excel VBA - 如果B列中的某個單元格包含值,則A列等於「值」,但不會覆蓋現有A列數據

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") 

    With ws 
     lRow = .Range("B" & .Rows.Count).End(xlUp).Row 

     .Range("A1:A" & lRow).SpecialCells(xlCellTypeBlanks).Formula = "=If(B1<>"""",""NEW VALUE"","""")" 
     .Range("A1:A" & lRow).Value = .Range("A1:A" & lRow).Value 
    End With 
End Sub 

我對VBA相當新,所以請原諒我的帖子中的任何含糊之處。

回答

0

這個公式纔有效。

.Range("A1:A" & lRow).SpecialCells(xlCellTypeBlanks).Formula = "=If(B1<>"""",""NEW VALUE"","""")" 

.SpecialCells(xlCellTypeBlanks)可能是可能會或可能不會在第1行你需要將其轉換爲xlR1C1風格式開始,以有它正確地識別第一個空行領域不連續的範圍。

.Range("A1:A" & lRow).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=If(LEN(RC2),""NEW VALUE"", TEXT(,))" 

TEXT(,)相同"",你不必帶引號的字符串內翻倍的行情;類似地,表示B列中值的長度的任何正數都與<>""相同。

+0

Jeeped, 非常感謝您澄清了我嘗試使用的公式究竟出了什麼問題。我確信我會在未來某個時候使用你教給我的東西! – UserX

+0

子Update_Column_Based_On_Column_Value_1() 上的錯誤繼續下一步 昏暗WS作爲工作表 昏暗lRow只要 集WS = ThisWorkbook.Sheets( 「工作表Sheet」) 帶有WS lRow = .Range( 「B」 &.Rows。計數).End(xlUp).Row'該列必須更改爲匹配目標列 。012(「A1:A」&lRow) 「NEW VALUE」,TEXT(,))「'RC#是變量,其中#必須等於從 .Range(」A1:A「&lRow).Value = .Range(」A1:A「 &lRow).Value End With End Sub – UserX

0

除了插入公式和事後得到他們的價值觀,你可以通過使用純VBA做同樣的邏輯:如果A1是第一空白

Sub Update_Column_Based_On_Column_Value_1() 
Dim ws As Worksheet 
Dim lRow As Long 
Set ws = ThisWorkbook.Sheets("Sheet1") 

With ws 
    lRow = .Range("B" & .Rows.Count).End(xlUp).Row 
    For i = 1 To lRow 
     If .Cells(i, 2) <> "" Then 
      .Cells(i, 1) = "NEW VALUE" 
     End If 
    Next i 
End With 
End Sub 
+0

Tehscript, 非常感謝!你的解決方案完美運作 – UserX

相關問題