4*7矩阵转成3*10矩阵

问题:4*7矩阵转成3*10矩阵

函数解决:

{=INDEX(T(OFFSET($A$1,(ROW($1:$30)-1)/7,MOD(ROW($7:$36),7))),ROW(A1)*3+COLUMN(A1)-3)}

 

思路:

先将4*7矩阵转换成1*30矩阵的内存数组。

转换使用Offset函数,第一个参数为固定的A1,第二个参数依次为7个0、7个1、7个2和7个3,第三个参数为0、1、2、3、4、5、6的循环。

利用Row(1:30)-1建构一列结果为0-29的内存数组,将这30个数分别除以7,所得结果整数部分达到第二个参数的要求。

 

利用Row(7:36)建构一列7-36的内存数组,分别计算每一个数除以7的余数,所得结果达到第三个参数的要求。

 

当Offset除第一个参数以外的参数为内存数组时,其结果为多维引用,无法在一个单元格平面内正常显示,此处用T函数将其每个平面的第一个结果提取出来,重新建构成一个1列30行的内存数组。

再将1*30的矩阵转成3*10的矩阵。

利用Index函数生成一个结果,再右拉下拉完成公式。

Index的第一个参数即T(Offset……,第二个参数是利用Row和Column函数建构一个右拉下拉后得出下图结果。

 

Row(a1)*3右拉不会导致结果变化,下拉会导致结果以3为步长的变化。

Column函数下拉不会导致结果变化,右拉会以1为步长变化。

再-3以修正结果。 

posted @ 2022-10-02 16:26  熬肥妖  阅读(67)  评论(0)    收藏  举报