准确来说这是个数学题,公式不算多复杂,但思路不好找
1、首先把所有空白填满,每一列变成公差0.5的等差数列
2、观察中间1开头的一列,分别是1,2.5,5,8.5,13……逐项相减分别是1.5,2.5,3.5,4.5,因此原数列为二次函数,设行数是r,函数解析式y=ar^2+br+c,列方程组可以解出解析式为y=(r^2+1)/2。
3、设列数为c,对于其他列的话,每往左一列就是所有函数值减少0.5,往右就是都增加,即“上加下减括号外”,所以我们只需要在刚才式子里加上列数/2就行了。再考虑到刚才是以第6列拟合的函数,所以应该加的是(c-A2)/2,因此整个数组的表达式为:y=(r^2+c+1-A2)/2
4、使用makearray构建数组,之后用if剔除不想要的数。
首先需要去除左上角和右上角,第一行只有最中间的1,第二行算上中间的小数有3个,第三行有5个,这是类似于绝对值的,不难发现关系为ABS(c-A2)<r。
之后剔除所有小数,这个可以用int(y)=y,但这个麻烦一点,最简单是直接判断r+c是奇数或偶数(但注意,在A2是偶数的时候要留下r+c是奇数,反之A2是奇数要留r+c是偶数,所以直接判断r+c+A2是奇数就行了)
最后公式为:=MAKEARRAY(A2,2*A2-1,LAMBDA(r,c,IF(ISODD(r+c+A2)*(ABS(c-A2)<r),(r^2+c+1-A2)/2,"")))

