excel根据指定列特征按顺排列编公式问题

已知sheet1中A列字符(比如AA,BB,C2C,DfD..),B列字符为2或者1(2,2,1,2。。),如何在sheet2中把sheet1中B列字符为2的A的字符按照顺序列出?sheet2的A列结果应该为AA,BB,DfD。。 要求用公式编写,可以下拉,不采用筛选和粘贴功能,要求公式编写。再如果sheet2中的A列为合并单元格,难度大一点,怎么写?请指教

其实上面 真真真白丁 的做法已经很不错了,我就再提提自己的意见吧:


1.首先他的方法有一点没有考虑到的是排序的问题,他是能找出对应B列为2的对应结果,但是输出的结果是没有排序的(如图)

所以,用这种方法的前提是要把A列已经做好了排序才可以的。


2.我觉得对于这种方法当中查找的公式是可以有一点改进的:

=IF(ISERROR(MATCH(2,OFFSET(J$1,L1+1,0,11,1),0)+L1),"",MATCH(2,OFFSET(J$1,L1+1,0,11,1),0)+L1)

对于图中L1首先输入一个0, 然后再L2输入我上面的公式然后下拉就可以完成查找2的全部过程。


3.但是这个方法还是存在无法排序的问题,如果A列是数字的话我们可以再加一个辅助列,使用Small或者Large函数来进行排序,但是由于A列是文本,而Excel没有一个合适的函数来直接做排序,所以我们只能采用别的方式进行。


4.对于文本的排序我们无法直接使用函数来做,我们只能够去进行一一比较来排序,如果使用一般函数来一一比较,那将会增加n×n个辅助单元格才能完成(列A有n个元素),为了简化计算和节省内存,我们必须使用数组公式来进行这个比较:

在D2单元格输入:

=INDEX(A:A,RIGHT(LARGE((COUNTIF($A$2:$A$12,">="&$A$2:$A$12)*10^3+ROW($A$2:$A$12))*IF($B$2:$B$12=2,1,0),ROW(1:1)),3))

然后同时按Ctrl+Shift+Enter(同时按下这三个键Excel才知道你这个单元格输入的是数组公式),然后同样下拉就会出现如图列D的结果。

你可以直接把下面多余的数据删掉就可以得到列F一样的形式,当然如果你想一次过用公式完成的话,那就使用以下这个:

=IF(LARGE((COUNTIF($A$2:$A$12,">="&$A$2:$A$12)*10^3+ROW($A$2:$A$12))*IF($B$2:$B$12=2,1,0),ROW(1:1))=0,"",INDEX(A:A,RIGHT(LARGE((COUNTIF($A$2:$A$12,">="&$A$2:$A$12)*10^3+ROW($A$2:$A$12))*IF($B$2:$B$12=2,1,0),ROW(1:1)),3)))

这样就长了点咯,不过一样记得要用同时按Ctrl+Shift+Enter才能得出正确结果!!!


5.其实最简单的方法真的是筛选和排序,何必要用公式来做呢,真的挺麻烦的,具体可以看看我上传的附件希望能有帮助,对于上面的公式有什么不明白就追问吧,希望我的回答能够帮到你!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-24

恕我笨,添加了一列辅助列。

D2公式:=MATCH(2,$B$1:$B$6,0)

D3公式:=IF(ISERROR(MATCH(2,INDIRECT("$B$"&SUM($D$2:D2)+1&":$B$6"),0)),"",MATCH(2,INDIRECT("$B$"&SUM($D$2:D2)+1&":$B$6"),0)),下拉


E2公式:=IF(D2<>"",INDEX($A$1:$A$6,SUM($D$2:D2)),""),下拉



你可以把公式改一下放到sheet2中去。合并单元格不影响结果,辅助列就COPY sheet2中的那一列,保持合并状态一致即可。

本回答被提问者采纳
相似回答