我需要在整个C列中应用“IF”公式,直到使用VBA在表格中有最后一个值。
但如果我使用以下代码,我将收到错误438。 Plz帮帮我
Sub test11()
With Sheets("Sheet")
.Range("c1:c" & .Cells(.Rows.Count, "A").End(xlUp).Row).Formula = "=IF(B1="",TRIM(A1),TRIM(B1))"
End With
End Sub
答案 0 :(得分:1)
因此,您的工作表名称为Sheet
或Sheet1
? OP提到的工作表名称为Sheet2
。这消除了一个错误。其次,您需要将D
列设置为.Cells(.Rows.Count,"D").End(xlUp).Row)
而不是A
列。
这是一个非常难看的代码:它将最后一次使用的行计入Long
变量。然后相应地设置范围,以便使用formula
设置AutoFill
。
Sub test11()
Dim l As Long
l = Sheets(1).Range("d1:d" & Sheets(1).Cells(Sheets(1).Rows.Count, "D").End(xlUp).Row).Count
With Sheets("Sheet1")
.Range("d1").Formula = "=IF(IsNull(B1),TRIM(A1),TRIM(B1))"
.Range("d1").AutoFill Destination:=Range("d1:d" & l), Type:=xlFillDefault
End With
End Sub
答案 1 :(得分:0)
你的逻辑看起来有点奇怪,但这很有效:
Sub test11()
With Sheets("Sheet1")
.Range(.Range("c1"), .Range("C" & .Rows.Count).End(xlUp)) = "=IF(B1="""",TRIM(A1),TRIM(B1))"
End With
End Sub
你需要在VBA中用引号加倍引号。
另一种变体:
Sub test12()
With Sheets("Sheet1")
Intersect(.Range("c1").CurrentRegion, .Range("C:C")).Formula = "=IF(B1="""",TRIM(A1),TRIM(B1))"
End With
End Sub