excel表格中有一列数,其中有1、3、5这三个数若干,排列随机且乱序(可能是12438153865……这样的)现在想在某一单元格内输出这一列中的1、3、5的行间距(比如刚才所举的例子就应该输出:3,2,1,1,3),求高人给个算法!
注意是 数组公式,需要同时按ctrl+shift+enter输入
"第一列:1,3,5;第二列:2,3,4;第三列:5,6,7;第四列:2,5,0;第五列:1,3,5;第六列:1,3,6;第七列:9,3,2;第八列:1,5,5;第九列:1,3,4;第十列:6,3,7;第十一列:1,3,5。现在要输出"1,3,4"和"1,3,5"和"1,3,6"这三个数组之间的行距,那么结果应该是:4,1,3,2。"
算法:
=IF(SUM(COUNTIF($A$1:$A$11,{1,3,5}))<ROW(A1)+1,"",INDEX(FREQUENCY(IF(MMULT(N($A$1:$A$11<>{1,3,5}),ROW($1:$3)^0)-2,ROW($A$1:$A$11)),IF(MMULT(N($A$1:$A$11={1,3,5}),ROW($1:$3)^0),ROW($A$1:$A$11)))+1,ROW(A2)))
追问数组问题求解
追答数组的。qq1614945346 的也行。
追问貌似看不到他给的公式……
追答他的公式很好的思路,我给他减点字符。
他的公式:
=IF(ROW(A1)<SUM(--($A$1:$A$999={1,3,5})),SUM(SMALL(IF(($A$1:$A$999=1)+($A$1:$A$999=3)+($A$1:$A$999=5),ROW($A$1:$A$999)),ROW(A1:A2))*{-1;1}),"")
减点字符:
=IF(ROW(A1)<SUM(--($A$1:$A$999={1,3,5})),SUM(SMALL(IF(MMULT(N($A$1:$A$999={1,3,5}),ROW($1:$3)^0),ROW($1:$999)),ROW(1:2))*{-1;1}),"")
额,我说的是对二楼的追问:如果要是1换成一个数组"1,3,4",3换成"1,3,5",5换成"1,3,6"应该怎么改?其他数字也换成了数组……求教!晚上回去必给加分!
追答有点没搞懂题意。你可以再描述一下。比如举个例子。上个图最好
追问网络差,上不了图……第一列:1,3,5;第二列:2,3,4;第三列:5,6,7;第四列:2,5,0;第五列:1,3,5;第六列:1,3,6;第七列:9,3,2;第八列:1,5,5;第九列:1,3,4;第十列:6,3,7;第十一列:1,3,5。现在要输出"1,3,4"和"1,3,5"和"1,3,6"这三个数组之间的行距,那么结果应该是:4,1,3,2。求算法……
我原本以为,原来单个数字的算法稍微变动一下,就可以套用,后来我发现我太年轻了……
都在一列,多行,打错了应该是"第几行"
好吧,不纠结了,我想到了个笨法子,讲"1,3,4"替换成"134",然后就没有然后了
本回答被提问者采纳是
汗