Vba 如果值在范围内,则粘贴公式

Vba 如果值在范围内,则粘贴公式,vba,excel,Vba,Excel,我试图创建一个宏,如果H列中存在一个值,它将把公式粘贴到I列中 这段代码就是我遇到问题的地方。当我运行它时,它显示运行时错误“1004”:对象“\u Global”的方法“Range”失败。我知道这不是实现我想做的事情的最有效的方式。仅当H列中存在值时,才应粘贴该公式,而不是不加区分地粘贴。有人知道怎么做吗 Range("I2:I" & LastRow).Formula = "=CONCATENATE(""Ck #"", G2,"" - "", H2)" 完整代码: Sub prepn

我试图创建一个宏,如果H列中存在一个值,它将把公式粘贴到I列中

这段代码就是我遇到问题的地方。当我运行它时,它显示运行时错误“1004”:对象“\u Global”的方法“Range”失败。我知道这不是实现我想做的事情的最有效的方式。仅当H列中存在值时,才应粘贴该公式,而不是不加区分地粘贴。有人知道怎么做吗

Range("I2:I" & LastRow).Formula = "=CONCATENATE(""Ck #"", G2,"" - "", H2)"
完整代码:

Sub prepn()

Columns("I:L").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("I1").Value = "Description"
Range("J1").Value = "Co"
Range("K1").Value = "Au"
Range("L1").Value = "Acct"
Range("M1").Value = "Comments"
Range("I2:I" & LastRow).Formula = "=CONCATENATE(""Ck #"", G2,"" - "", H2)"
End Sub

提前谢谢你

问题很可能是你在文本中的引用。他们必须写下,以导致。大概是这样的:

Range("I2:I" & LastRow).Formula = "=CONCATENATE(""Ck #"", G2,"" - "", H2)"

这是我想你想要的。最后一行calc用于列I,即您正在放置数据的列,如果不只是更改字母的话

  Sub prepn()

    LastRow = Range("I" & Rows.Count).End(xlUp).Row
    Columns("I:L").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("I1").Value = "Description"
    Range("J1").Value = "Co"
    Range("K1").Value = "Au"
    Range("L1").Value = "Acct"
    Range("M1").Value = "Comments"
    Range("I2:I" & LastRow).Formula = "=CONCATENATE(" & Chr(34) & "Ck #" & Chr(34) & ", G2," & Chr(34) & " - " & Chr(34) & ", H2)"

End Sub
g2=此处,H2=也 你把这个放在牢房里 =G2,G2,-,H2


我打赌你不希望每个单元格都有G2和H2,但这是另一个问题。

你输入的公式不完整。连接后有一个开括号,但没有右括号。@GordonK-woops。现在修好了!但是宏仍然不能工作。@pnuts我修复了右括号,但仍然出现了相同的错误,即使Sam在下面进行了修复。有什么想法吗?LastRow并不像Slai说的那样被宣布-你的LastRow价值在哪里?嗯…我不知道。我直接粘贴了你发布的内容,但似乎仍然出现了相同的错误。我将编辑主帖子,以包含我的完整代码,以防有什么东西把它搞砸了。调试显示它是那个特定的行。无法在VBA中获取,Try=CONCATENATE&Chr34&Ck&Chr34&,G2&Chr34&-&Chr34&,H2@Sam:你试过你的代码了吗?我做了,J Doe也做了,但它不起作用。是的,我已经测试过了。它起作用了。尝试Debug.Print**,它将打印**,即一行4个引号,您的答案不会显示这一点。我更喜欢CHR34,因为你不会遇到问题,这正是我想要的!!!非常感谢你。我搜索了所有地方,把代码混合在一起,编辑我的旧代码,看看什么能起作用,然后回到这个完美的状态。再次感谢你!