宝哥软件园

excel公式教程:查找字符串中可被指定数字整除的数字个数

编辑:宝哥软件园 来源:互联网 时间:2021-09-28

在单元格A1中输入任意长度的字母数字字符串。请使用公式返回字符串中可被3、5或7整除的位数。这里,“字符串中的数字”指的是字符串中任何长度的连续子字符串,它们可以被视为数字。例如,字符串:

XX30X5XXX42XX771

它包含13个数字:3,0,30,5,4,2,42,7,7,1,77,71,771。

因为:

3可以被3整除。

0可以被3、5或7整除。

30可以被3或5整除。

5可以被5整除。

4不能被3、5或7整除。

2不能被3、5或7整除。

42可以被3或7整除。

7可以被7整除。

7可以被7整除。

1不能被3、5或7整除。

77可以被7整除。

71不能被3、5或7整除。

71可以被3整除。

因此,字符串中可被3、5或7等分的位数是9。

那么,如何写出这个公式来求这个量呢?

先不看答案,自己试试。

公式

所需的数组公式:

=SUM(0(MMULT(IFERROR(0)(MOD(INDEX(MID(A1,Arry1,IF(1 LEN(A1)-arr y1=TRANSPOSE(Arry1),TRANSPOSE(arr y1)),N(IF(1,Arry3))),N(IF(1,Arry4))),{3,5,7})=0),0,{ 1;1;1})0))

公式分析

在公式中,Arry1、Arry2、Arry3和Arry4是定义的四个名称。

名称:Arry1。

参考位置:=row(间接(" 1:" len ($ a1)))

名称:Arry2。

参考位置:=row(间接(" 1:" len ($ a1) 2))-1。

名称:Arry3。

参考位置:=1 INT((Arry2)/LEN($A1))

名称:Arry4。

参考位置:=1 MOD((Arry2),LEN($A1))

1.首先看MID功能部分:

MID(A1,Arry1,IF(1 LEN(A1)-Arry1=转置(Arry1),转置(arr y1)))

依次解析MID函数的两个参数。

(1)对于第一个参数start_num,即Arry1:

ROW(间接(" 1:" LEN($A1)))

在单元格A1中生成从1到字符串长度的整数数组:

{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16}

(2)对于第二个参数num_chars,即:

IF(1 LEN(A1)-Arry1=转置(Arry1),转置(arr y1))

在解析这个IF语句之前,看一个常见的方法,就是简单地将这个参数指定为:

转置(Arry1),即:

{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}

此时,的MID功能部分是:

MID(A1,Arry1,转置(Arry1))

转换为:

MID(" XX30X5XX 42X771 ",{ 1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16},{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16})

可以看出传递给函数的两个数组是正交的:一个是单行数组(对应参数start_num),另一个是单行数组(对应参数num_chars)。这样,这两个数组将生成一个16行16列的矩阵,其中包含MID函数的所有256个可能结果。例如,生成数组的第一个元素等于MID(A1,1,1)的结果“x”,第二个元素等于MID(A1,1,2)的结果“XX”,以此类推,最终结果为:

{“X”、“XX”、“XX3”、“XX30”、“XX30X”、“XX30X5”、“XX30X5X”、“XX30X5XX”、“XX30X5XX”、“XX30X5XX”、“XX30X5XX”、“XX30X5XX 2”、“XX30X5XX”、“XX30X5XX”、“XX30X5XX”、“XX30X5XX”、“XX30X5XX”、“XX30X5XX 7”、“XX30X5XX 71”;“X”、“X3”、“X30”、“X30X”、“X30X5”、“X30X5X”、“X30X5XX”、“X30X5XX”、“X30X5XX”、“X30X5XX 4”、“X30X5XXX42”、“X30X5XXX42X”、“X30X5XX”、“X30X5XXX42XX”、“X30X5XXX42XX”、“X30X5XX 77”、“X30X5XX 42xx 71”、“X30X5XX 42xx 71”3英寸、30英寸、30X、30X5英寸、30X5X、30X5XX、30X5XX、30X5XX、30X5XX 4英寸、30X5XXX42英寸

更多资讯
游戏推荐
更多+