【问题标题】:Excel VBA: inserting WHEN formula into specific range of cells with variable changing columnExcel VBA:将WHEN公式插入具有可变列的特定单元格范围
【发布时间】:2016-10-31 20:38:12
【问题描述】:

尊敬的 StackOverflow 用户您好,

我的问题是关于通过宏将公式插入特定范围的单元格。一次又一次。

所以公式的Basic函数应该如下:

=WHEN('ZEK '!F3="X";"6";WHEN('ZEK '!G3="X";"8";"1"))

在我的宏中,它必须更改下一个特定范围的列。 这发生在 for 循环中,i 正在增长。

含义 --> =When('ZEK '!$F$"& i+2 &"....... 或任何其他应该工作的语法。我的尝试相当失败,这就是为什么我需要你的帮助。

这是我最初的尝试,我用字符串交换了所有内容:

Sub 123()
Dim a,b,c As String
a = 1
b = 6
c = 8

....

'used and declared variables k, x, f, a, b, c

Range(Cells(k + 2, 5), Cells(k + 27, 5)).FormulaR1C1 = _
"=WHEN('ZEK'!$F$" & f & "=" & x & ";" & a & ";WHEN('ZEK'!$G$" & f & "=" & x & ";" & b & ";" & c & "))"

End Sub

我得到运行时错误 1004。(将其从 .FormulaR1C1 更改为 .Formula)

我希望我提供了足够的信息,以便您可以帮助我。 这真的不必是高性能的,我只需要将公式放入大约 100.000 个单元格中,i 会针对每个单元格范围进行更改

【问题讨论】:

  • 您是否尝试将其置于循环中? f 是循环变量吗?您收到错误消息吗?如果是这样,它是什么?如果要使用 A1 引用样式,请将 .FormulaR1C1 更改为 .Formula
  • 我正在循环播放i。 f 是变量f = i + 2-,其中 i 一直在增长。更改为 .Formula 后,我仍然会收到运行时错误 1004。
  • 您的 x,a,b,c 变量中是否缺少双引号?不用设置公式,可以Debug.Print "=WHEN..."看看公式是否写对了吗?

标签: excel vba macros formula


【解决方案1】:

我觉得是语言问题...试试

"=IF('ZEK'!$F$" & f & "=" & x & "," & a & ",IF('ZEK'!$G$" & f & "=" & x & "," & b & "," & c & "))"

注意使用IF, 作为分隔符而不是;WHEN 甚至是有效的工作表函数吗?老实说,我不知道通过 VBA 设置公式时工作表函数是否被翻译。不过,分隔符是经过调整的。

编辑:还有.FormulaLocal 属性应该使用; 作为分隔符!所以将.Formula 更改为.FormulaLocal。如果您在使用, 作为默认分隔符的机器上执行它,这可能会导致错误,所以我会尝试坚持使用.Formula

【讨论】:

  • 你好,arcadeprecinct,我想我们差不多了。至少他确实在右侧单元格中填写了以下公式。 =WENN(ZEK!$F$3=X;6;WENN(ZEK!$G$3=X;8;1)) WENN 是德语中的 IF 函数。尽管他希望我打开一个文件并且不重定向到工作表“ZEK”。 ' .. ' 也失踪了。问候 TiroX
  • @TiRoX '...' 消失,因为工作表名称不包含空格。 Excel 显然找不到名为“ZEK”的工作表。你确定它在那里(它必须是显示在主窗口选项卡中的名称)。如果 ZEK 是标识符而不是名称((Name) 属性而不是 VBA 编辑器中的 Name 属性),请使用名称或 "..." & ZEK.Name & "..."
  • 你好 Arcadeprecinct,我想我们差不多完成了:D 我只需要修复它而不是 X,它是 Formular 中的“X”。德语 Excel 中的当前输出:=WENN(ZEK!$F$3=X;6;WENN(ZEK!$G$3=X;8;1)) 所需输出:=WENN(ZEK!$F$3="X";6;WENN(ZEK!$G$3="X";8;1)) 所以我只需要落后,我如何才能输出“”。你有什么想法吗?
  • @TiRoX 使用 double 双引号在字符串中获取双引号:""X""
  • 我明白了。我的最终公式:"=IF(" & a & "" & f & "=""X""," & edi & ",IF(" & b & "" & f & "=""X""," & brofis & "," & druck & "))" 非常感谢您的支持!!!
猜你喜欢
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多