ARTICLE · 993986
Excel智能读取读取筛选项,一键生成请款单
Excel智能读取读取筛选项,一键生成请款单今天有个同事问我,怎么才能通过简单的筛选,在Excel表格界面上只出现跟筛选项相关的信息,包括数据和文字。 具体需求是这样的: 同一份订单涉及多个供应商,每个供应商需要单独请款 
想要通过筛选某一个供应商,自动汇总相关数据,并且所筛选供应商的名词出现在采购总额的前缀,效果如下图: 
销售总额和采购总额这类数字汇总,不难,直接用SUBTOTAL这个公式就能简单解决。这里的难点是,怎么获取所筛选的供应商呢? 答案还是SUBTOTAL 获取所筛选供应商名字的公式: 公式解析: 最终完整的公式如下:
【拓展】 SUBTOTAL这个函数是针对可见单元格进行计算,第一个参数决定了计算的方法,具体参数对应的方法如下图: 
思考:如果是多选,如何把所有筛选的项目显示在同一个单元格呢? 提示:ARRAYTOTEXT,有兴趣的可以试试这个函数


=UNIQUE(FILTER($H$3:$H$18,SUBTOTAL(3,OFFSET(H3,ROW($H$3:$H$18)-ROW(H3),0,1))))OFFSET(H3, ROW($H$3:$H$18)-ROW(H3), 0, 1):为H列的每个单元格生成一个从0~16的独立序号
SUBTOTAL(3, ...):这个函数是核心,3代表统计非空单元格个数。对于可见(未被筛选隐藏)的单元格会返回1,被隐藏的则返回0。FILTER($H$3:$H$18, ..., ""):根据SUBTOTAL生成的1和0数组,筛选出所有可见的H列单元格。UNIQUE(...):去除重复值。如果只筛选了一个供应商(如“龙湖家居”),就会得到唯一的结果“龙湖家居”;如果筛选了多个,会显示所有结果。
=IF(COUNTA(UNIQUE(FILTER($H$3:$H$18,SUBTOTAL(3,OFFSET(H3,ROW($H$3:$H$18)-ROW(H3),0,1)))))>1,"采购总额",UNIQUE(FILTER($H$3:$H$18,SUBTOTAL(3,OFFSET(H3,ROW($H$3:$H$18)-ROW(H3),0,1))))&"采购总额")

关注我,时间赎回计划——用效率换回被加班偷走的时间⏰