如何在Google Sheets中筛选废料值不一致的食谱行
Google Sheets 筛选废料值存在差异的食谱方案
问题背景
现有Google Sheets中的食谱数据集如下:
Recipe Ingredient Sequence. Waste Chicken Soup Celery. 1. 5% Chicken Soup Carrots. 2. 3% Chicken Soup Stock. 3. 0% Chicken Soup Chicken. 4. 0% Beef Stew. Beef. 1. 0% Beef Stew. Stock. 2. 0% Beef Stew. Spices. 3. 0%
需求:
- 忽略所有食材废料值(Waste列)完全一致的食谱
- 提取/高亮废料值存在差异的食谱的所有行,用于后续分析
方法1:辅助列+QUERY函数提取目标行
适合需要将结果导出到单独工作表的场景:
- 添加辅助列(例如E列),在E2单元格输入公式,下拉填充至所有行:
=COUNTUNIQUE(FILTER($D$2:$D,$A$2:$A=A2))>1
该公式统计当前食谱对应的所有Waste值的唯一数量,若大于1则返回TRUE(表示废料值有差异),否则返回FALSE。
- 在新工作表的A1单元格输入QUERY函数,提取所有符合条件的行:
=QUERY(Sheet1!A1:D8,"select * where Col5 = TRUE",1)
替换Sheet1!A1:D8为你的实际数据范围;Col5对应辅助列的位置,若辅助列是E列则为第5列
方法2:条件格式高亮目标行
适合直接在原表标记差异食谱的场景:
- 选中所有数据行(例如A2:D8)
- 点击「格式」→「条件格式」
- 选择「自定义公式」,输入以下规则:
=COUNTUNIQUE(FILTER($D$2:$D,$A$2:$A=$A2))>1
- 设置你需要的高亮样式(例如填充色),保存后所有废料值有差异的食谱行将自动高亮。
方法3:数组公式直接提取(无辅助列)
不需要额外添加列,直接一次性提取结果:
在新工作表的A2单元格输入公式:
=FILTER(A2:D8,BYROW(A2:D8, LAMBDA(row, COUNTUNIQUE(FILTER(D2:D8,A2:A8=INDEX(row,1)))>1)))
该公式通过BYROW遍历每一行,判断当前行所属的食谱是否存在废料值差异,最终筛选出符合条件的所有行。
内容的提问来源于stack exchange,提问作者Michael Friedman
相关产品推荐
相关产品推荐

