包含数字和指定字符的正则表达式_Excel公式练习39: 求字符串中的数字组成的数能够被指定数整除的数的个数...
學習Excel技術,關注微信公眾號:
excelperfect
導語:繼續研究來自于excelxor.com的案例。這個案例比較復雜,需要仔細研究。
本次的練習是:在單元格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整除
771可以被3整除
所以,該字符串中能夠被3、5或7整除的數字的數量為9。
那么,如何編寫這個公式求出這個數量呢?
先不看答案,自已動手試一試。
公式
所需要的數組公式:
=SUM(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))
公式解析
公式中的Arry1、Arry2、Arry3和Arry4是定義的四個名稱。
名稱:Arry1
引用位置:=ROW(INDIRECT(“1:” & LEN($A1)))
名稱:Arry2
引用位置:=ROW(INDIRECT(“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>=TRANSPOSE(Arry1),TRANSPOSE(Arry1)))
依次來解析MID函數的兩個參數。
(1)對于第一個參數start_num,即Arry1:
ROW(INDIRECT(“1:” & LEN($A1)))
生成從1到單元格A1中字符串長度的整數組成的數組:
{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16}
(2)對于第二個參數num_chars,即:
IF(1+LEN(A1)-Arry1>=TRANSPOSE(Arry1),TRANSPOSE(Arry1))
在對此IF語句進行解析之前,先看一個常用的方式,即對于該參數簡單地指定其為:
TRANSPOSE(Arry1),即:
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
此時的MID函數部分為:
MID(A1,Arry1,TRANSPOSE(Arry1))
轉換為:
MID(“XX30X5XXX42XX771”,{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","XX30X5XXX","XX30X5XXX4","XX30X5XXX42","XX30X5XXX42X","XX30X5XXX42XX","XX30X5XXX42XX7","XX30X5XXX42XX77","XX30X5XXX42XX771";"X","X3","X30","X30X","X30X5","X30X5X","X30X5XX","X30X5XXX","X30X5XXX4","X30X5XXX42","X30X5XXX42X","X30X5XXX42XX","X30X5XXX42XX7","X30X5XXX42XX77","X30X5XXX42XX771","X30X5XXX42XX771";"3","30","30X","30X5","30X5X","30X5XX","30X5XXX","30X5XXX4","30X5XXX42","30X5XXX42X","30X5XXX42XX","30X5XXX42XX7","30X5XXX42XX77","30X5XXX42XX771","30X5XXX42XX771","30X5XXX42XX771";"0","0X","0X5","0X5X","0X5XX","0X5XXX","0X5XXX4","0X5XXX42","0X5XXX42X","0X5XXX42XX","0X5XXX42XX7","0X5XXX42XX77","0X5XXX42XX771","0X5XXX42XX771","0X5XXX42XX771","0X5XXX42XX771";"X","X5","X5X","X5XX","X5XXX","X5XXX4","X5XXX42","X5XXX42X","X5XXX42XX","X5XXX42XX7","X5XXX42XX77","X5XXX42XX771","X5XXX42XX771","X5XXX42XX771","X5XXX42XX771","X5XXX42XX771";"5","5X","5XX","5XXX","5XXX4","5XXX42","5XXX42X","5XXX42XX","5XXX42XX7","5XXX42XX77","5XXX42XX771","5XXX42XX771","5XXX42XX771","5XXX42XX771","5XXX42XX771","5XXX42XX771";"X","XX","XXX","XXX4","XXX42","XXX42X","XXX42XX","XXX42XX7","XXX42XX77","XXX42XX771","XXX42XX771","XXX42XX771","XXX42XX771","XXX42XX771","XXX42XX771","XXX42XX771";"X","XX","XX4","XX42","XX42X","XX42XX","XX42XX7","XX42XX77","XX42XX771","XX42XX771","XX42XX771","XX42XX771","XX42XX771","XX42XX771","XX42XX771","XX42XX771";"X","X4","X42","X42X","X42XX","X42XX7","X42XX77","X42XX771","X42XX771","X42XX771","X42XX771","X42XX771","X42XX771","X42XX771","X42XX771","X42XX771";"4","42","42X","42XX","42XX7","42XX77","42XX771","42XX771","42XX771","42XX771","42XX771","42XX771","42XX771","42XX771","42XX771","42XX771";"2","2X","2XX","2XX7","2XX77","2XX771","2XX771","2XX771","2XX771","2XX771","2XX771","2XX771","2XX771","2XX771","2XX771","2XX771";"X","XX","XX7","XX77","XX771","XX771","XX771","XX771","XX771","XX771","XX771","XX771","XX771","XX771","XX771","XX771";"X","X7","X77","X771","X771","X771","X771","X771","X771","X771","X771","X771","X771","X771","X771","X771";"7","77","771","771","771","771","771","771","771","771","771","771","771","771","771","771";"7","71","71","71","71","71","71","71","71","71","71","71","71","71","71","71";"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1"}
這個數組由單元格A1中的字符串拆分后的所有可能的子字符串組成。
但是,仔細觀察會發現,這個數組中有很多重復的字符串,如果將其與3、5、7相除的話,所得到的值的數量肯定會大于真實值。例如,數組中后面關于771、71和1的一些數據:
=MID(A1,14,3)
的值為“771”,其后的:
=MID(A1,14,4)
=MID(A1,14,5)
=MID(A1,14,6)
…
=MID(A1,14,16)
都返回“771”。
因為對于MID函數來說,如果指定的字符數量超過了字符本身,將獲取到字符末尾的字符串。
因此,現在的重點是將該數組轉化為(MID函數到字符串長度限制后)沒有重復字符串的數組。這意味著,對于生成的16行16列矩陣中每一行,將TRUE傳遞給所有未在該行中重復或在該行中首次出現的值,否則將FALSE傳遞給其他值。
這樣,下面的部分公式能夠生成所需的TRUE/FALSE值數組:
1+LEN(A1)-Arry1>=TRANSPOSE(Arry1)
轉換為:
1+16-{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16}>=TRANSPOSE({1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16})
轉換為:
{16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1}>={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
對第一個數組16個值中的每個值是否大于第二個數組中的16個值,執行256次比較,得到結果:
{TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE}
雖然沒有必要,但是將這些布爾值轉換為等效的數值看起來可能會更清晰:
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1;1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0;1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0;1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0;1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0;1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0;1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0;1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0;1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0;1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0;1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0;1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0;1,1,1,1,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,1,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}
這意味著,對于我們的16行16列的結果矩陣中的第一行,它對應于MID(A1,1,1)、MID(A1,1,2)、MID(A1,1,3)、…、MID(A1,1,16),這些值都是有效的,因為顯然他們都不是彼此重復的。
對于該矩陣數組中的第二行,對應于MID(A1,2,1)、MID(A1,2,2)、MID(A1,2,3)、…、MID(A1,2,16),除了最后一個值外都是有效的,因為MID(A1,2,15)和MID(A1,2,16)都等于“X30X5XXX42XX771”。
依此類推。最后的結果就是我們想要的(MID函數到字符串長度限制后)沒有重復值的數組。因此,公式部分:
IF(1+LEN(A1)-Arry1>=TRANSPOSE(Arry1),TRANSPOSE(Arry1))
的結果為:
{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,FALSE;1,2,3,4,5,6,7,8,9,10,11,12,13,14,FALSE,FALSE;1,2,3,4,5,6,7,8,9,10,11,12,13,FALSE,FALSE,FALSE;1,2,3,4,5,6,7,8,9,10,11,12,FALSE,FALSE,FALSE,FALSE;1,2,3,4,5,6,7,8,9,10,11,FALSE,FALSE,FALSE,FALSE,FALSE;1,2,3,4,5,6,7,8,9,10,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;1,2,3,4,5,6,7,8,9,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;1,2,3,4,5,6,7,8,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;1,2,3,4,5,6,7,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;1,2,3,4,5,6,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;1,2,3,4,5,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;1,2,3,4,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;1,2,3,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;1,2,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;1,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE}
(3)這意味著,公式部分:
MID(A1,Arry1,IF(1+LEN(A1)-Arry1>=TRANSPOSE(Arry1),TRANSPOSE(Arry1)))
的結果為:
{"X","XX","XX3","XX30","XX30X","XX30X5","XX30X5X","XX30X5XX","XX30X5XXX","XX30X5XXX4","XX30X5XXX42","XX30X5XXX42X","XX30X5XXX42XX","XX30X5XXX42XX7","XX30X5XXX42XX77","XX30X5XXX42XX771";"X","X3","X30","X30X","X30X5","X30X5X","X30X5XX","X30X5XXX","X30X5XXX4","X30X5XXX42","X30X5XXX42X","X30X5XXX42XX","X30X5XXX42XX7","X30X5XXX42XX77","X30X5XXX42XX771","";"3","30","30X","30X5","30X5X","30X5XX","30X5XXX","30X5XXX4","30X5XXX42","30X5XXX42X","30X5XXX42XX","30X5XXX42XX7","30X5XXX42XX77","30X5XXX42XX771","","";"0","0X","0X5","0X5X","0X5XX","0X5XXX","0X5XXX4","0X5XXX42","0X5XXX42X","0X5XXX42XX","0X5XXX42XX7","0X5XXX42XX77","0X5XXX42XX771","","","";"X","X5","X5X","X5XX","X5XXX","X5XXX4","X5XXX42","X5XXX42X","X5XXX42XX","X5XXX42XX7","X5XXX42XX77","X5XXX42XX771","","","","";"5","5X","5XX","5XXX","5XXX4","5XXX42","5XXX42X","5XXX42XX","5XXX42XX7","5XXX42XX77","5XXX42XX771","","","","","";"X","XX","XXX","XXX4","XXX42","XXX42X","XXX42XX","XXX42XX7","XXX42XX77","XXX42XX771","","","","","","";"X","XX","XX4","XX42","XX42X","XX42XX","XX42XX7","XX42XX77","XX42XX771","","","","","","","";"X","X4","X42","X42X","X42XX","X42XX7","X42XX77","X42XX771","","","","","","","","";"4","42","42X","42XX","42XX7","42XX77","42XX771","","","","","","","","","";"2","2X","2XX","2XX7","2XX77","2XX771","","","","","","","","","","";"X","XX","XX7","XX77","XX771","","","","","","","","","","","";"X","X7","X77","X771","","","","","","","","","","","","";"7","77","771","","","","","","","","","","","","","";"7","71","","","","","","","","","","","","","","";"1","","","","","","","","","","","","","","",""}
注意,當參數num_chars指定為0或FALSE時,MID函數返回空字符串。
2. 現在,我們已經從單元格A1的字符串中生成了所有可能的子字符串,下面需要做的就是測試這些數據能否被3、5、7整除。
當然,首先要看哪些數值能被3整除,再看哪些數值能被5整除,最后看能被7整除的數值。(我們也要考慮公式的靈活性,即不僅適用于這里給出的3個數,還應適用于其他任意給出的數)
但是,現在我們想要同時測試是否能被這3個數的整除,而不是一個一個來。這意味著,對于剛才生成的16行16列的矩陣數組,我們想給MOD函數傳遞一個含有3個值(即3、5和7)的數組作為除數。
如果這256個數據都在單列(或單行),那么實現公式非常簡單:
MOD(A1:A256,{3,5,7})
這將生成一個256行3列的數組,由每一行的數據除以3、5、7所得到的余數組成。
然而,這里我們將生成的兩維數組和作為除數的一維數組傳遞給MOD函數時,將生成一個三維數組。太復雜了!因此,我們必須想辦法將上面生成的數組轉換成單列或單行數組。
這里,將傳遞含有256個值的數組到INDEX的每個參數,這些數組具有相同的“偏移”(即兩個單列或兩個單行),從而確保最終的數組是一維的。
傳遞給INDEX的數組中,參數row_num為:
N(IF(1,Arry3))
參數column_num為:
N(IF(1,Arry4))
(1)先看看定義的名稱Arry3:
1+INT((Arry2)/LEN($A1))
它引用了名稱Arry2:
ROW(INDIRECT("1:" & LEN($A1)^2))-1
轉換為:
ROW(INDIRECT("1:" & 16^2))-1
轉換為:
ROW(INDIRECT("1:" & 256))-1
結果為從0至255的值組成的數組:
{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99;100;101;102;103;104;105;106;107;108;109;110;111;112;113;114;115;116;117;118;119;120;121;122;123;124;125;126;127;128;129;130;131;132;133;134;135;136;137;138;139;140;141;142;143;144;145;146;147;148;149;150;151;152;153;154;155;156;157;158;159;160;161;162;163;164;165;166;167;168;169;170;171;172;173;174;175;176;177;178;179;180;181;182;183;184;185;186;187;188;189;190;191;192;193;194;195;196;197;198;199;200;201;202;203;204;205;206;207;208;209;210;211;212;213;214;215;216;217;218;219;220;221;222;223;224;225;226;227;228;229;230;231;232;233;234;235;236;237;238;239;240;241;242;243;244;245;246;247;248;249;250;251;252;253;254;255}
因此,名稱Arry3:
1+INT((Arry2)/LEN($A1))
轉換為:
1+INT(({0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99;100;101;102;103;104;105;106;107;108;109;110;111;112;113;114;115;116;117;118;119;120;121;122;123;124;125;126;127;128;129;130;131;132;133;134;135;136;137;138;139;140;141;142;143;144;145;146;147;148;149;150;151;152;153;154;155;156;157;158;159;160;161;162;163;164;165;166;167;168;169;170;171;172;173;174;175;176;177;178;179;180;181;182;183;184;185;186;187;188;189;190;191;192;193;194;195;196;197;198;199;200;201;202;203;204;205;206;207;208;209;210;211;212;213;214;215;216;217;218;219;220;221;222;223;224;225;226;227;228;229;230;231;232;233;234;235;236;237;238;239;240;241;242;243;244;245;246;247;248;249;250;251;252;253;254;255})/16)
最后的結果為:
{1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;4;4;4;4;4;4;4;4;4;4;4;4;4;4;4;4;5;5;5;5;5;5;5;5;5;5;5;5;5;5;5;5;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;7;7;7;7;7;7;7;7;7;7;7;7;7;7;7;7;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;10;10;10;10;10;10;10;10;10;10;10;10;10;10;10;10;11;11;11;11;11;11;11;11;11;11;11;11;11;11;11;11;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;13;13;13;13;13;13;13;13;13;13;13;13;13;13;13;13;14;14;14;14;14;14;14;14;14;14;14;14;14;14;14;14;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;16;16;16;16;16;16;16;16;16;16;16;16;16;16;16;16}
該數組由16個1、16個2、16個3、…、16個16組成。
(2)再看看定義的名稱Arry4:
1+MOD((Arry2),LEN($A1))
與前述類似,最終轉換成:
{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;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;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;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;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;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;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;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}
與Arry3中的元素相同,但是排列順序不同。
(3)將這兩個數組作為行參數和列參數傳遞給INDEX函數,并使用在上文中得到的16行16列矩陣數組作為INDEX函數的第一個參數,等價于下面256個單獨的INDEX公式:
INDEX(Our_Array,1,1)
INDEX(Our_Array,1,2)
INDEX(Our_Array,1,3)
…
INDEX(Our_Array,16,16)
INDEX函數將遍歷16行16列矩陣中的每一行,并取出相應列中的數值。因為參數row_num和參數column_num所指定的數組都是單列數組,最后形成的結果也是一個單列數組。這樣,就將前面得到的二維數組轉換成了一維數組。
這樣,公式中的:
INDEX(MID(A1,Arry1,IF(1+LEN(A1)-Arry1>=TRANSPOSE(Arry1),TRANSPOSE(Arry1))),N(IF(1,Arry3)),N(IF(1,Arry4)))
將16行16列的矩陣轉換成為256行1列的矩陣:
{"X";"XX";"XX3";"XX30";"XX30X";"XX30X5";"XX30X5X";"XX30X5XX";"XX30X5XXX";"XX30X5XXX4";"XX30X5XXX42";"XX30X5XXX42X";"XX30X5XXX42XX";"XX30X5XXX42XX7";"XX30X5XXX42XX77";"XX30X5XXX42XX771";"X";"X3";"X30";"X30X";"X30X5";"X30X5X";"X30X5XX";"X30X5XXX";"X30X5XXX4";"X30X5XXX42";"X30X5XXX42X";"X30X5XXX42XX";"X30X5XXX42XX7";"X30X5XXX42XX77";"X30X5XXX42XX771";"";"3";"30";"30X";"30X5";"30X5X";"30X5XX";"30X5XXX";"30X5XXX4";"30X5XXX42";"30X5XXX42X";"30X5XXX42XX";"30X5XXX42XX7";"30X5XXX42XX77";"30X5XXX42XX771";"";"";"0";"0X";"0X5";"0X5X";"0X5XX";"0X5XXX";"0X5XXX4";"0X5XXX42";"0X5XXX42X";"0X5XXX42XX";"0X5XXX42XX7";"0X5XXX42XX77";"0X5XXX42XX771";"";"";"";"X";"X5";"X5X";"X5XX";"X5XXX";"X5XXX4";"X5XXX42";"X5XXX42X";"X5XXX42XX";"X5XXX42XX7";"X5XXX42XX77";"X5XXX42XX771";"";"";"";"";"5";"5X";"5XX";"5XXX";"5XXX4";"5XXX42";"5XXX42X";"5XXX42XX";"5XXX42XX7";"5XXX42XX77";"5XXX42XX771";"";"";"";"";"";"X";"XX";"XXX";"XXX4";"XXX42";"XXX42X";"XXX42XX";"XXX42XX7";"XXX42XX77";"XXX42XX771";"";"";"";"";"";"";"X";"XX";"XX4";"XX42";"XX42X";"XX42XX";"XX42XX7";"XX42XX77";"XX42XX771";"";"";"";"";"";"";"";"X";"X4";"X42";"X42X";"X42XX";"X42XX7";"X42XX77";"X42XX771";"";"";"";"";"";"";"";"";"4";"42";"42X";"42XX";"42XX7";"42XX77";"42XX771";"";"";"";"";"";"";"";"";"";"2";"2X";"2XX";"2XX7";"2XX77";"2XX771";"";"";"";"";"";"";"";"";"";"";"X";"XX";"XX7";"XX77";"XX771";"";"";"";"";"";"";"";"";"";"";"";"X";"X7";"X77";"X771";"";"";"";"";"";"";"";"";"";"";"";"";"7";"77";"771";"";"";"";"";"";"";"";"";"";"";"";"";"";"7";"71";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"1";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""}
3. 有了上述基礎后,現在知道,公式中的部分:
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})
為一個256列1行的數組與一個1行3列的數組求余,即:
MOD({"X";"XX";"XX3";"XX30";"XX30X";"XX30X5";"XX30X5X";"XX30X5XX";"XX30X5XXX";"XX30X5XXX4";"XX30X5XXX42";"XX30X5XXX42X";"XX30X5XXX42XX";"XX30X5XXX42XX7";"XX30X5XXX42XX77";"XX30X5XXX42XX771";"X";"X3";"X30";"X30X";"X30X5";"X30X5X";"X30X5XX";"X30X5XXX";"X30X5XXX4";"X30X5XXX42";"X30X5XXX42X";"X30X5XXX42XX";"X30X5XXX42XX7";"X30X5XXX42XX77";"X30X5XXX42XX771";"";"3";"30";"30X";"30X5";"30X5X";"30X5XX";"30X5XXX";"30X5XXX4";"30X5XXX42";"30X5XXX42X";"30X5XXX42XX";"30X5XXX42XX7";"30X5XXX42XX77";"30X5XXX42XX771";"";"";"0";"0X";"0X5";"0X5X";"0X5XX";"0X5XXX";"0X5XXX4";"0X5XXX42";"0X5XXX42X";"0X5XXX42XX";"0X5XXX42XX7";"0X5XXX42XX77";"0X5XXX42XX771";"";"";"";"X";"X5";"X5X";"X5XX";"X5XXX";"X5XXX4";"X5XXX42";"X5XXX42X";"X5XXX42XX";"X5XXX42XX7";"X5XXX42XX77";"X5XXX42XX771";"";"";"";"";"5";"5X";"5XX";"5XXX";"5XXX4";"5XXX42";"5XXX42X";"5XXX42XX";"5XXX42XX7";"5XXX42XX77";"5XXX42XX771";"";"";"";"";"";"X";"XX";"XXX";"XXX4";"XXX42";"XXX42X";"XXX42XX";"XXX42XX7";"XXX42XX77";"XXX42XX771";"";"";"";"";"";"";"X";"XX";"XX4";"XX42";"XX42X";"XX42XX";"XX42XX7";"XX42XX77";"XX42XX771";"";"";"";"";"";"";"";"X";"X4";"X42";"X42X";"X42XX";"X42XX7";"X42XX77";"X42XX771";"";"";"";"";"";"";"";"";"4";"42";"42X";"42XX";"42XX7";"42XX77";"42XX771";"";"";"";"";"";"";"";"";"";"2";"2X";"2XX";"2XX7";"2XX77";"2XX771";"";"";"";"";"";"";"";"";"";"";"X";"XX";"XX7";"XX77";"XX771";"";"";"";"";"";"";"";"";"";"";"";"X";"X7";"X77";"X771";"";"";"";"";"";"";"";"";"";"";"";"";"7";"77";"771";"";"";"";"";"";"";"";"";"";"";"";"";"";"7";"71";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"1";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""},{3,5,7})
得到一個由求余后的結果組成的256行3列的數組:
{#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;0,3,3;0,0,2;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;0,0,0;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;2,0,5;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;1,4,4;0,2,0;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;2,2,2;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;1,2,0;2,2,0;0,1,1;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!1,2,0;2,1,1;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;1,1,1;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!}
在數組中,0值表示該處的值能夠被3、5或7整除。
4. 將上述數組與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
得到一組#VALUE!值和TRUE/FALSE值組成的數組。然后將所得到的數組與0相加:
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)
強制將TRUE/FALSE值轉換成1/0,得到一組#VALUE!值和1/0值組成的數組。將該數組傳遞給IFERROR函數:
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)
將錯誤值#VALUE!轉換成0,得到一組由0、1組成的256行3列的數組(其中1代表原256行的數組中該處數值能夠被3、5或7整除):
{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,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,0,0;1,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;1,1,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,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;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,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,0;1,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,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,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;0,0,1;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,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,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}
上述數組傳遞給MMULT函數:
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})
轉換為:
MMULT({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,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,0,0;1,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;1,1,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,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;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,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,0;1,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,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,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;0,0,1;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,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,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})
一個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.使用數組乘法統計數值的技術。
總結
以上是生活随笔為你收集整理的包含数字和指定字符的正则表达式_Excel公式练习39: 求字符串中的数字组成的数能够被指定数整除的数的个数...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mq同步mysql数据 duplicat
- 下一篇: 前端传中文文件名_前端工程师需要掌握哪些