
配图为梵高的星空,是科幻小说《三体》中太阳系被时空工具“二向箔”从三维打击成二维世界的象征。
本文则讲述矩阵数据从二维变成一维,不过这个工具可不是“一维丝”。
由于经常处理大量格式数据,或者入数据库,所以经常要对二维的矩阵数据进行降维打击,使所有数据变成规范的一列。这时候大名鼎鼎的offset函数就派上用场了,在offset函数的使用中,数列的灵活使用作用非常之大。
有两个函数要配合offset的使用,其中之一就是mod函数,第二个就是int函数。
Mod函数可以循环生成一组等差数列。
Int函数则可以使一组数列变成一个数。
基础的部分不知道就先百度一下offset函数吧。
下面我们举例说明:一个4*6的数据矩阵,转换成一列数据,就是黄色的部分。
不废话先看东西,黄色部分的公式是这样的。=OFFSET($A$1,MOD(ROW()-1,4),INT((ROW()-1)/4)-1)
我们把其中的行偏移和列偏移提取出来看是什么结果。
把公式变为=MOD(ROW()-1,4)
把公式变为=INT((ROW()-1)/4)-1
这样很直观,原公式实际就是=offset(以A1为准,行偏移为0123循环,列偏移为00001111....循环),每走4个行数据列加1再走4个行数据,很直白。
所以offset的精髓就是构造这两个函数,把过程想象成每走几行列加1,出来这两个数列,函数也就完成了。
如果不限构造这两个函数,初学的话可能调试半天也找不到问题,还容易出错,简单吧。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。