一个256行3列的数组与一个3行1列数组相乘,得到一个256行1列的数组:
{0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0}
也就是256行3列数组中每行可以被3、5、7整除的结果组成的数组,即1代表该行中可以被3、5、7中的某个数整除,2代表该行中可以被3、5、7中的某两个数整除,3代表该行中可以被3、5、7中的三个数整除 。将得到的数组与0相比较:
(MMULT(IFERROR(0+(MOD(INDEX(MID(A1,Arry1,IF(1+LEN(A1)-Arry1>=TRANSPOSE(Arry1),TRANSPOSE(Arry1))),N(IF(1,Arry3)),N(IF(1,Arry4))),{3,5,7})=0),0),{1;1;1})>0)
得到一个由TRUE/FALSE值组成的数组,其中TRUE值表示可以被3、5或7整除,将得到的数组与0相加,将TRUE/FALSE强制转换成1/0,然后传递给SUM函数求和,得到值9,也就是该字符串中分拆出的能够被3、5或7整除的数的个数 。
小结:尽管这个案例似乎没有多少实用性,但在解决问题的过程中使用的处理字符串的技术是非常值得学习和借鉴的 。
1.将字符串拆分成所有可能组合的技术 。
2.将二维数组转换成一维数组的技术 。
3.使用数组乘法统计数值的技术 。
推荐阅读
- pandigitals excel公式教程: 1/17和其他全数字
- excel公式教程:TRANSPOSE,非数组版本
- excel公式教程: 求一列中的数字剔除掉另一列中的数字后剩下的数字
- excel公式教程: 找到和的加数
- excel公式教程:找到和的加数
- excel公式教程:拆分连字符分隔的数字并放置在同一列中
- Excel下拉菜单的三种做法
- Excel表格INDIRECT函数的妙用
- SUMPRODUCT分组排名公式
- 多关键字 怎么用公式实现根据多个条件排名次