将vlookup与文本字符串组合在一起

时间:2012-11-30 07:02:55

标签: excel vba excel-vba

任何人都可以解释以下公式的语法失败的地方吗?

Selection.FormulaLocal = "=concatenate(vlookup(" & i & ", _
inputs!A5:B43,2,false), " some words")""

如果我想简单地使用vlookup,该公式可以正常工作,但是当我尝试添加文本时,我遇到了语法错误。有没有更好的方法可以在不使用FormulaLocal的情况下执行此操作。我可以将vlookup与文本结合起来吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

FormulaLocal属性(和Formula属性)需要一个字符串(或字符串文字),它与您从公式栏中键入的公式相同。您正在尝试设置无效的字符串文字:

 "=concatenate(vlookup(" & i & ", inputs!A5:B43,2,false), " some words")""
'<   string literal    >< VBA ><     string literal       ><    VBA  ><string literal>

为了组合两个字符串,您需要使用&,否则它是无效的VBA代码:

 "=concatenate(vlookup(" & i & ", inputs!A5:B43,2,false), " & some words & ")""
'<   string literal    >< VBA ><     string literal       ><       VBA     ><string>

字符串文字用开始和结束双引号定义。你怎么把双引号加入字符串文字?在VBA中你放了两个双引号:

 "=concatenate(vlookup(" & i & ", inputs!A5:B43,2,false), ""some words"")"
'<   string literal    >< VBA ><           string literal                >
'Resulting formula (i=5): =concatenate(vlookup(5, inputs!A5:B43,2,false), "some words")

请记住,这一切都在VBA级别。结果字符串也必须是Excel的有效公式。例如,如果i不是数字而是单词,则公式最终会如下所示:

=concatenate(vlookup(a word, inputs!A5:B43,2,false), "some words")

这是无效的Excel语法。在这种情况下,解决方案是在i附近添加双引号:

"=concatenate(vlookup(""" & i & """, inputs!A5:B43,2,false), ""some words"")"

答案 1 :(得分:0)

尝试添加&而不是concat

= "text" & (vlookupformula)

所以你的代码将是,

Selection.FormulaLocal = "= vlookup(" & i & ", _
inputs!A5:B43,2,false) & " some words"

您可以尝试以下方法:

Dim strWords = "some words"
Selection.formula = "= vlookup(" & i & ", _
    inputs!A5:B43,2,false) "
selection.Formula = .Formula & " & """ & strWords & """"