如何使用VLOOKUP匹配分类关联颜色,实现条件格式自动应用背景色
操作步骤
- 首先确认:Google Sheets原生条件格式暂不支持直接读取其他单元格的填充色作为自动填充依据,也不支持动态根据返回值设置填充色,你可以根据分类数量选下面两种方案:
方案1:分类数量较少(小于10个),直接配置规则
- 选中主工作表需要应用规则的单元格范围,点击顶部「格式 > 条件格式」,右侧规则面板选择规则类型为「自定义公式是」
- 公式栏输入
=A1=VLOOKUP(A1, settings!$A:$A, 1, FALSE)(这里把A1替换为你选中范围的第一个单元格地址,settings!$A:$A替换为你settings页存储分类的列范围) - 在下方填充色选项中选择和该分类对应的颜色,点击「完成」
- 重复上述步骤,给每个分类配置对应的条件格式规则即可
方案2:分类数量较多,用自定义脚本自动匹配
- 点击顶部「扩展程序 > Apps脚本」,粘贴以下代码,保存项目后刷新表格
// 自定义函数:获取指定单元格的填充色十六进制值 function GET_BACKGROUND_COLOR(cellRef) { return SpreadsheetApp.getActiveSpreadsheet().getRange(cellRef).getBackground(); } // 自动触发:主表单元格修改时自动填充对应颜色 function AUTO_SET_CATEGORY_COLOR(e) { const ss = SpreadsheetApp.getActiveSpreadsheet(); // 配置部分:根据你实际的表格范围修改下面参数 const MAIN_SHEET_NAME = "主表"; // 替换为你的主工作表名称 const SETTINGS_SHEET_NAME = "settings"; const CATEGORY_RANGE = "A2:A"; // settings页存储分类的列范围 const COLOR_COLUMN = 2; // settings页存储对应颜色的列号,B列就是2 const activeSheet = e.source.getActiveSheet(); if (activeSheet.getName() !== MAIN_SHEET_NAME || !e.value) return; const settingsSheet = ss.getSheetByName(SETTINGS_SHEET_NAME); const categories = settingsSheet.getRange(CATEGORY_RANGE).getValues().flat().filter(v => v); const colorIndex = categories.indexOf(e.value); if (colorIndex === -1) return; const targetColor = settingsSheet.getRange(colorIndex + 2, COLOR_COLUMN).getBackground(); activeSheet.getRange(e.range.getRow(), e.range.getColumn()).setBackground(targetColor); }
- 进入Apps脚本的「触发器」页面,新增一个触发器,选择事件源为「电子表格」,事件类型为「编辑」,触发函数选
AUTO_SET_CATEGORY_COLOR,保存授权后即可生效,后续主表选择分类后会自动匹配settings页的填充色。
内容的提问来源于stack exchange,提问作者user17131817
相关产品推荐
相关产品推荐

