求实现Excel反向筛选的Formula或VBA:筛选未授权指定产品的企业
实现产品反向筛选:获取未授权指定产品的企业列表
我来给你梳理两种实用的解决方案,不管你是用Excel手动操作,还是用代码自动化处理,都能搞定这个反向筛选需求~
方法一:Excel手动实现(适合非代码用户)
针对你的300家企业、5000行数据的规模,用Excel的内置功能完全能轻松处理:
- 提取所有唯一企业:把原始表的「企业名称」列复制到新工作表,点击「数据」选项卡的「删除重复值」,就能得到300家企业的唯一列表。
- 标记已授权目标产品的企业:回到原始表,筛选出「产品名称」等于你指定产品的行,复制这些行的企业名称并去重;在新表的第二列用公式判断,比如输入
=IF(ISNUMBER(MATCH(A2, 已授权企业的单元格区域, 0)), "已授权", "未授权"),下拉填充所有行。 - 筛选未授权企业:对新表的标记列筛选「未授权」,剩下的就是你要的未授权企业列表了。
小技巧:如果想更高效,还可以用高级筛选结合辅助列:在原始表新增一列,输入 =IF(B2="你要选的产品名", 1, 0),然后对企业列去重后,用 =SUMIF(原始表!A:A, A2, 原始表!C:C) 统计每个企业的授权次数,筛选出结果为0的企业即可。
方法二:Python脚本自动化(适合大数据量快速处理)
如果以后需要频繁做这类反向筛选,或者数据量再扩大,用Python写个小脚本就能一键搞定:
- 先确保安装了
pandas库,打开命令提示符输入:pip install pandas - 编写如下脚本(适配xlsx格式的表,csv的话把
read_excel改成read_csv):
import pandas as pd # 读取原始数据表 df = pd.read_excel("企业产品订阅表.xlsx") # 输入要查询的产品名称 target_product = input("请输入要查询的产品名称:") # 获取所有唯一企业集合 all_companies = set(df["企业名称"].unique()) # 获取已授权该产品的企业集合 authorized_companies = set(df[df["产品名称"] == target_product]["企业名称"].unique()) # 计算未授权企业(集合差集操作) unauthorized_companies = list(all_companies - authorized_companies) # 输出结果并保存到文件 print(f"未授权【{target_product}】的企业共有{len(unauthorized_companies)}家:") for idx, company in enumerate(unauthorized_companies, 1): print(f"{idx}. {company}") # 保存为Excel文件 pd.DataFrame({"未授权企业名称": unauthorized_companies}).to_excel("未授权企业列表.xlsx", index=False)
运行脚本后,输入目标产品名,就能直接得到未授权企业的列表,还会自动保存成新的Excel文件,非常省心~
内容的提问来源于stack exchange,提问作者aaaaaaaaaaaaaaa
相关产品推荐
相关产品推荐

