如何在Google Sheets中筛选出无「Company Profile」指定行的企业?
Google Sheet通讯录缺失「Company Profile」行快速解决方案
方法1:无代码公式筛选(适合单次处理)
前提:假设企业名称存储在A列,行类型标注存储在B列,实际使用时替换为你表格对应的列号即可
- 新建空白工作表,避免操作污染原数据
- 提取所有唯一企业名称:在新表A1单元格输入
=UNIQUE(通讯录!A:A),自动生成所有不重复的企业列表 - 判断企业是否有对应特殊行:在新表B1输入公式,下拉至所有企业行末尾
=COUNTIFS(通讯录!A:A, A1, 通讯录!B:B, "Company Profile") - 筛选B列数值为0的行,即为缺失「Company Profile」条目的企业,复制这些企业名后可批量粘贴回原表补充
方法2:Apps Script自动批量处理(适合定期重复使用)
如果需要常态化检查补全,可使用内置脚本工具一次性完成检查+补全操作:
- 打开通讯录表格,点击顶部菜单栏「扩展程序」->「Apps Script」
- 替换默认代码为如下内容,根据你的表格列设置修改
COMPANY_COL和TYPE_COL的数值(列号从0开始计数,A列对应0,B列对应1,以此类推):
function addMissingCompanyProfiles() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("通讯录"); const data = sheet.getDataRange().getValues(); const COMPANY_COL = 0; // 企业名称所在列,按实际修改 const TYPE_COL = 1; // 行类型标注所在列,按实际修改 const TOTAL_COLUMNS = 21; // 表格总列数 const hasProfileCompanies = new Set(); const allCompanies = new Set(); data.forEach(row => { const companyName = row[COMPANY_COL]; if (companyName) allCompanies.add(companyName); if (row[TYPE_COL] === "Company Profile") hasProfileCompanies.add(companyName); }); const missingCompanies = [...allCompanies].filter(company => !hasProfileCompanies.has(company)); if (!missingCompanies.length) { SpreadsheetApp.getUi().alert("所有企业均已存在Company Profile行"); return; } // 生成待插入的行数据,可自定义其他列的默认填充值 const newRows = missingCompanies.map(company => { const emptyRow = new Array(TOTAL_COLUMNS).fill(""); emptyRow[COMPANY_COL] = company; emptyRow[TYPE_COL] = "Company Profile"; // 需默认填充其他列可在此处添加,例:emptyRow[2] = "企业通用信息" return emptyRow; }); sheet.getRange(sheet.getLastRow() + 1, 1, newRows.length, TOTAL_COLUMNS).setValues(newRows); SpreadsheetApp.getUi().alert(`已成功补全${newRows.length}条缺失的Company Profile行`); }
- 保存脚本,首次运行需要完成账号授权,之后每次需要检查补全时直接运行该脚本即可。
注意事项
- 操作前建议先备份原表格数据,避免误改
- 若你的行类型标注存在大小写、前后空格等格式差异,可在公式或脚本的判断逻辑中增加标准化处理(如统一转小写、去除首尾空格),避免漏判
内容的提问来源于stack exchange,提问作者Brittan M. S. Breaux
相关产品推荐
相关产品推荐

