创建像Excel" Loop"没有VBA

时间:2017-05-13 01:45:53

标签: excel loops for-loop while-loop excel-formula

我正在尝试构建一个模拟"循环的公式"在excel中。电子表格将数据从数据库中提取到四个电子表格中。公式需要遍历工作表,如果找到的值是#N / A,则移动到下一个工作表。当前设置使用index(match())来查找工作表中表格中的值。要在工作表之间移动,我使用choose()来驱动indirect()更改为下一个工作表,但我不确定如何模拟循环...问题似乎是我需要将函数引用回自身,然后退出循环。

我想象解决方案就像是

=IFNA(CHOOSE( [the next number], INDEX(Sheet[the next number]!A1:Z500, MATCH(G1, Sheet[the next number]!A1:Z1), MATCH(A250, Sheet[the next number]!A1:A500)

工作表无法使用VBA。

2 个答案:

答案 0 :(得分:1)

继续我的评论: 可以使用迭代计算,类似于此设置 -

  • A1=INDEX(B1:B4,A2)*1

  • A2IF(ISERR(A1),A2+1,A2)

  • B1:B4:查找值

A1中的索引遇到B1:B4中的字母时,它会引发错误(来自*1

A2A1中看到错误时,它会递增

由于A2A1正在编制索引的行值,A1会查看下一行,这可能会也可能不会导致错误

A1不是错误时,A2会停止递增。见下图

A2 iterates until A1 is not an error

可以使用类似的设置迭代工作表,使用ISNA在索引公式中查找错误,我会以此为例,但我不能100%确定您的公式是什么做(它有太多的开括号!)

注释

要访问迭代公式选项,请转到File - > Options - > Formulas - >检查Enable iterative calculation。如果要点击 F9 并手动增加一张纸张,则将最大迭代次数设置为1,否则将其设置为您正在查看的纸张数量(4?)。这样你就可以循环你的辅助单元4次,并且在它没有检测到错误的任何情况下都会停止递增。

另外,我喜欢将我的循环参考公式A2包装在额外的IF(A3 = "rst",1,...)中,以便我可以重置值而无需重新输入公式

迭代计算非常好,因为它们允许您有效地在Excel中间计算中保存数据,但必须谨慎使用它们以避免无限循环和大量计算时间 - 我使用VBA因为它更安全

答案 1 :(得分:0)

将公式拆分为5个不同的公式会更简单:第一个4在4张纸上进行查找,然后第5个公式使用嵌套的If(如果你在Office上则使用IFS) 365 Excel 2016)使用4个公式中的有效结果选择查找。