我需要通过VBA
将此公式添加到一系列行中=WENN(ISTNV(VERWEIS(2;1/(Januar!A1:A99&"*"&Januar!B1:B99=A16&"*"&B16);Januar!D:D));" ";VERWEIS(2;1/(Januar!A1:A99&"*"&Januar!B1:B99=A16&"*"&B16);Januar!D:D))
它的德语,但唯一重要的是,我需要用循环变量替换16 i
For i = 17 To Rows.Count
Cells(14, i).FormulaLocal = "=WENN(ISTNV(VERWEIS(2;1/(Januar!A1:A99&"*"&Januar!B1:B99=A"&i"&""*""&B""&i"");Januar!D:D));"" "";VERWEIS(2;1/(Januar!A1:A99&""*""&Januar!B1:B99=A""i""&""*""&B""i"");Januar!D:D))"
Next
我读了一些文章,但我似乎没有工作:/
答案 0 :(得分:1)
公式字符串是用双引号"
括起来的字符串文字。我们可以使用&
将变量连接到该字符串中。如果我们通过复制来逃避它们,我们可以在字符串中使用双引号。
示例:
Dim s as String
Dim i as Integer
i = 123
s = "Test " & i & " Test"
s = "Test """ & i & """ Test"
在您的特殊情况下,额外的困难是您不仅&
作为VBA
中的连接运算符,而且还包含在公式字符串中。这导致混乱。我建议首先在字符串变量中创建公式字符串。所以你可以Debug.print
这个字符串并检查。
For i = 17 To Rows.Count
sFormula = "=WENN(ISTNV(VERWEIS(2;1/(Januar!A1:A99&""*""&Januar!B1:B99=A" & i & "&""*""&B" & i & ");Januar!D:D));"" "";VERWEIS(2;1/(Januar!A1:A99&""*""&Januar!B1:B99=A" & i & "&""*""&B" & i & ");Januar!D:D))"
Debug.Print sFormula
Cells(i, 14).FormulaLocal = sFormula
Next
Btw。:在Cells
内,第一个参数是行索引,第二个参数是列索引。因此,根据您的代码(i
是行号),它应该是Cells(i, 14)
。
顺便说一句:我建议不要使用FormulaLocal
而使用Formula
和英文函数名称以及英文公式表示法(逗号作为参数分隔符而不是分号)。这将更加独立于语言环境。
答案 1 :(得分:1)
Axel为您提供了解决方案
在此基础上,您可能希望采用FomulaLocalR1C1
属性来简化您的公式:
例如:
=A" & i & "&""*""&B" & i
会变成:
"=RC1 & ""*"" & RC2"
或
"=VERKETTEN(RC1;""*"";RC2)"
在这种情况下,您必须将所有范围引用转换为R1C1
表示法,以便:
Januar!A1:A99
Januar!B1:B99
成为:
Januar!R1C1:R99C1
Januar!R1C2:R99C2