我有一个列(x)并尝试在另一列(d)中执行If和like。在选择自动填充部件上获得范围错误。
Dim src As Range
Set src = Worksheets("File").Range("2:17783")
If (Range("x2").Value Like "*ProductType:'FXD';*") Then
Range("D2").Value = "FXD"
ElseIf (Range("x2").Value Like "*;ProductSubType:'SWLEG'*") Then
Range("D2").Value = "XSW"
End If
Selection.AutoFill Destination:=src.Columns("D")
答案 0 :(得分:3)
不要进行自动填充,只需立即设置值。
另外,不要忘记为所有范围对象提供工作表父级:
Dim src As Range
Set src = Worksheets("File").Range("2:17783")
If (Worksheets("File").Range("x2").Value Like "*ProductType:'FXD';*") Then
Worksheets("File").Range("D2:D17783").Value = "FXD"
ElseIf (Worksheets("File").Range("x2").Value Like "*;ProductSubType:'SWLEG'*") Then
Worksheets("File").Range("D2:D17783").Value = "XSW"
End If
答案 1 :(得分:2)
尝试使用列X设置值的范围以填充D列。
with worksheets("file")
select case true
case .cells(2, "X").value2 like "*ProductType:'FXD';*"
.range(.cells(2, "D"), .cells(.cells(.rows.count, "X").end(xlup).row, "D")) = "FXD"
case .cells(2, "X").value2 like "*;ProductSubType:'SWLEG'*"
.range(.cells(2, "D"), .cells(.cells(.rows.count, "X").end(xlup).row, "D")) = "XSW"
case else
'do nothing
end select
end with
答案 2 :(得分:1)
尝试改变
Selection.AutoFill Destination:=src.Columns("D")
来
Selection.AutoFill Destination:=src.Columns("D:D")
这将把这个公式一直拖到D列,这就是我假设你要做的事情,然而,它实际上会下到第1048576行,所以除非你试图这样做,将第二个范围更改为D
& whatevervaluehere