如何在Google Sheets中提取每行最右侧最后值?需数组公式与脚本方案
提取每行最右侧的有效价格:数组公式与Apps Script解决方案
一、数组公式解决方案
直接使用以下数组公式,无需逐行拖拽,可一次性返回所有行的最后有效价格:
=ARRAYFORMULA(LOOKUP(2,1/(ISNUMBER(F2:J5)),F2:J5))
公式逻辑说明:
ISNUMBER(F2:J5):判断每个单元格是否为有效数字价格,返回布尔值数组1/(ISNUMBER(...)):将有效价格对应的布尔值转为1,无效内容转为#DIV/0!错误值LOOKUP(2,1/(...),F2:J5):LOOKUP会忽略错误值,查找大于所有1的2时,会定位到每行最后一个有效1对应的原始价格,最终返回整列结果
如果需要更直观的写法,也可以用BYROW结合XLOOKUP实现:
=BYROW(F2:J5, LAMBDA(row, XLOOKUP(TRUE, ISNUMBER(row), row, , , -1)))
该写法通过BYROW遍历每一行,XLOOKUP以从右往左的方向(-1参数)查找第一个数字值并返回。
二、Apps Script解决方案
若数组公式存在兼容性问题,可通过自定义函数实现:
- 打开Google Sheets,点击「扩展程序」→「Apps Script」
- 粘贴以下代码并保存项目:
function getLastPrice(inputRange) { const result = []; inputRange.forEach(row => { let lastValidPrice = ''; // 从行的末尾向左遍历,查找第一个有效数字价格 for (let i = row.length - 1; i >= 0; i--) { const cellValue = row[i]; if (typeof cellValue === 'number' && !isNaN(cellValue)) { lastValidPrice = cellValue; break; } } result.push([lastValidPrice]); }); return result; }
- 返回表格,在目标单元格输入:
=getLastPrice(F2:J5)
即可自动提取每行最右侧的有效价格,支持动态更新范围。
内容的提问来源于stack exchange,提问作者Denis Sivzov
相关产品推荐
相关产品推荐

