在没有VBA的情况下创build类似Excel的“循环”

我正在尝试构build一个在Excel中模拟“循环”的公式。 电子表格将数据库中的数据转换为四个电子表格。 如果find的值是#N / A,则公式需要遍历表单,移动到下一个表单上。 当前设置使用index(match())来查找表格中的值。 为了在表单之间移动,我使用了choose()来驱动一个indirect()来切换到下一个表单,但我不知道如何模拟循环…问题似乎是我需要引用function回到自己,然后跳出循环。

我想象的解决scheme会是这样的

 =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。

继我的评论:可以使用迭代计算,类似于这个设置 –

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

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

  • B1:B4 :查找值

A1索引遇到B1:B4一个字母时,它会抛出一个错误(来自*1

A2A1看到错误时,它会增加

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

A1不是错误时, A2停止递增。 看到下面的图像

A2迭代直到A1不是错误

一个类似的设置可以用来迭代通过使用ISNA在索引公式中寻找错误的工作表,我会用这个例子,但我不是100%确定你的公式正在做什么(它有太多的开放括号!)

笔记

要访问迭代公式选项,请转到File – > Options – > Formulas – >检查Enable iterative calculation 。 如果要按F9并手动张增加纸张,请将最大迭代值设置为1,否则将其设置为您正在查看的纸张数(4?)。 这样你会循环你的帮手单元4次,它会停止递增,无论何时它不检测到错误。

另外,我喜欢将我的循环参考公式A2在一个额外的IF(A3 = "rst",1,...)这样我就可以重新设置该值,而不用重新input公式

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

将公式分成5个不同的公式会更简单:
前4个在4张纸上进行查找
那么第五个公式将使用嵌套的If(或IFS,如果您在Office 365 Excel 2016中)从4个公式中select具有有效结果的查找。