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