如何在Google表格单个单元格中查找并汇总指定名称关联的数字
嘿,刚好能帮你解决这个Google Sheets自定义函数的需求!我写了一个简单的脚本,完美匹配你的场景:
解决方案:自定义
SUMBYNAME函数 这个函数可以根据你指定的名称,自动统计目标单元格里对应数字的总和,还能自定义无匹配时的返回内容。
步骤1:创建自定义函数
- 打开你的Google表格,点击顶部菜单栏的「扩展程序」→「Apps 脚本」。
- 把默认的代码清空,粘贴下面的脚本:
function SUMBYNAME(targetName, cellRange, defaultReturn = "无匹配项") { // 获取目标单元格的文本内容 const cellContent = cellRange.getValue().toString().trim(); if (!cellContent) return defaultReturn; // 按任意空白字符拆分内容(兼容空格、换行符) const items = cellContent.split(/\s+/); let total = 0; // 遍历拆分后的数组,两两配对名称和数字 for (let i = 0; i < items.length; i += 2) { const currentName = items[i]; const currentNum = parseFloat(items[i+1]); // 匹配名称且数字有效时累加 if (currentName === targetName && !isNaN(currentNum)) { total += currentNum; } } // 无匹配时返回自定义内容,否则返回总和 return total === 0 ? defaultReturn : total; }
- 点击脚本编辑器顶部的「保存」按钮,给你的项目起个名字(比如“NameSumFunction”)。
步骤2:在表格中使用函数
回到你的Google表格,就可以像用内置函数一样调用SUMBYNAME了:
- 基础用法(无匹配时默认返回「无匹配项」):
这个公式会统计A1单元格里所有=SUMBYNAME("NameOne", A1)NameOne对应的数字总和,按你的示例会返回9。 - 计算其他名称:
会返回=SUMBYNAME("NameTwo", A1)3。 - 自定义无匹配时的返回内容:
如果想在找不到指定名称时返回0或者其他文本,直接加第三个参数:=SUMBYNAME("NameFour", A1, 0)
额外说明
- 兼容换行(Alt+Enter)和空格分隔:脚本用了
\s+拆分规则,不管你的条目是换行排列还是空格连在一起,都能正确识别名称和数字的配对。 - 支持小数:如果你的数字是小数(比如
NameOne 3.5),函数也能正确累加。 - 注意事项:这个函数假设你的名称不含空格,如果名称有空格(比如
Mary Ann),需要调整拆分逻辑,不过根据你的示例场景,这个设定完全适用。
内容的提问来源于stack exchange,提问作者Steve Marks
相关产品推荐
相关产品推荐

