Google Sheets:基于B列文本自动填充E/F/G列数据求助
Google Sheets 自动填充问题解决方法
你之前的错误点
- 直接在Q3单元格并列多个等式完全不符合Google Sheets公式语法,单元格公式必须是合法的函数表达式,不能随意堆砌判断式。
- 使用绝对引用
$B$3:$B$99指向整个区域,应该针对当前行的B列单元格做判断,而非整个范围。
方法一:普通公式(下拉式)
这种方法简单直接,适合手动快速设置:
- 在E3单元格输入:
=IF(B3="Sam's", 164, ""),回车后,鼠标放在E3右下角,出现十字光标时下拉到E99,每一行E列会自动根据对应B列的值判断填充。 - F3单元格输入:
=IF(B3="Sam's", 45, ""),下拉到F99。 - G3单元格输入:
=IF(B3="Sam's", 40, ""),下拉到G99。
方法二:数组公式(一键覆盖整列)
不想手动下拉的话,用数组公式一次性应用到整个目标区域:
- E3输入:
=ARRAYFORMULA(IF(B3:B99="Sam's", 164, "")),公式会自动遍历B3-B99,符合条件的E列对应行填164,否则留空。 - F3输入:
=ARRAYFORMULA(IF(B3:B99="Sam's", 45, "")) - G3输入:
=ARRAYFORMULA(IF(B3:B99="Sam's", 40, ""))
方法三:AppScript 实时自动填充
如果之前的脚本无效,大概率是触发逻辑或范围判断错误,试试这个脚本:
- 打开表格,点击顶部「扩展程序」>「Apps 脚本」。
- 删除默认代码,粘贴以下内容:
function onEdit(e) { const editRange = e.range; // 校验编辑的单元格是否在B3:B99,且内容为"Sam's" if (editRange.columnStart === 2 && editRange.rowStart >=3 && editRange.rowStart <=99 && editRange.getValue() === "Sam's") { const targetRow = editRange.rowStart; const activeSheet = e.source.getActiveSheet(); // 给对应行的E、F、G列赋值 activeSheet.getRange(targetRow, 5).setValue(164); activeSheet.getRange(targetRow, 6).setValue(45); activeSheet.getRange(targetRow, 7).setValue(40); } }
- 保存脚本(命名比如「AutoFillSam」),关闭编辑器。
- 回到表格,在B3-B99输入"Sam's",对应行的E、F、G会自动填充数值。
注意:第一次使用脚本需要授权,按提示完成权限验证即可。
内容的提问来源于stack exchange,提问作者DennisAlexander
相关产品推荐
相关产品推荐

