dynamic参考公式

我正在做一个涉及音乐的excel项目。 我在一张常量表中定义了所有不同的音符,并且想要在主表单上显示音阶。 这些是以不同顺序运行的常量。

例如:

如果在一张表中我定义了A – B – C – D

我希望能够dynamic填充列表,最后一个元素循环回到第一个元素(就像最后一个元素引用第一个元素的列表一样)。 下面的示例输出。

Root Scale AA - B - C - D BB - C - D - A CC - D - A - B DD - A - B - C 

伪代码中的逻辑

 if (lookup == 0) cell value = lookup - num constants defined //loop back around else (cell value = lookup value) 

我试图用类似的东西来实现这个

 =if constants!A2 = 0, <Loop around and fetch the equivalent Value>, <constants!A2>) 

如果可能的话,我很乐意使整个事情变得dynamic

 =if constants!$[Row()][Column()] = 0, <Loop around and fetch the equivalent Value>, <constants!$[Row()][Column()]>) 

这些都没有作为语法错误,但我希望他们有效地传达了这个想法。

我在想比例尺的第一列总是和那个之后的那个一样(从我的C2开始)

 =IFERROR(INDEX(Sheet2!$A$2:$D$2,MATCH(B2,Sheet2!$A$2:$D$2,0)+1),Sheet2!$A$2) 

比例尺(A,B,C,D)的注释在sheet2!a2:d2中。

所以它试图按顺序得到下一个音符,但是如果失败了,它会回到第一个音符。

在这里输入图像说明

模运算符MOD非常适合于辅助循环旋转。

在下面的图中,我有第2行的常量。从单元格A11开始,我input旋转开始的常量(绿色区域)。 然后我在B11input下面的公式,并在黄色区域复制/粘贴:

 =INDEX($2:$2,1+MOD(MATCH($A11,$2:$2)+COLUMN(B11)-COLUMN($C11),COUNTA($2:$2))) 

在这里输入图像说明

您可以将该部分转移到另一个工作表并调整单元格地址,并添加Constants!2:2前面。 还要注意公式会自动调整常量的数量…