夜雨聆风学习资料网

ARTICLE · 993986

Excel智能读取读取筛选项,一键生成请款单

Excel智能读取读取筛选项,一键生成请款单
今天有个同事问我,怎么才能通过简单的筛选,在Excel表格界面上只出现跟筛选项相关的信息,包括数据和文字。
具体需求是这样的:
同一份订单涉及多个供应商,每个供应商需要单独请款
想要通过筛选某一个供应商,自动汇总相关数据,并且所筛选供应商的名词出现在采购总额的前缀,效果如下图:
销售总额和采购总额这类数字汇总,不难,直接用SUBTOTAL这个公式就能简单解决。这里的难点是,怎么获取所筛选的供应商呢?
答案还是SUBTOTAL
获取所筛选供应商名字的公式:
=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))))&"采购总额")

【拓展】
SUBTOTAL这个函数是针对可见单元格进行计算,第一个参数决定了计算的方法,具体参数对应的方法如下图:
思考:如果是多选,如何把所有筛选的项目显示在同一个单元格呢?
提示:ARRAYTOTEXT,有兴趣的可以试试这个函数

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

相关学习资料