如何在Google Sheets的VLOOKUP中动态引用上一工作表名称?
自动调用上一工作表的VLOOKUP整合方案
你需要用INDIRECT函数把自定义脚本返回的工作表名称字符串转换成有效的单元格区域引用,就能和VLOOKUP结合实现自动引用。
直接替换成下面的公式即可:
=IFNA(VLOOKUP(A2,INDIRECT("'" & getPreviousSheet() & "'!$A$1:$I$150"),6,FALSE),0)
为什么要加INDIRECT?
你的getPreviousSheet()返回的是文本格式的工作表名称(比如"1017"),但VLOOKUP需要的是实际的单元格区域引用,INDIRECT的作用就是把文本字符串转换成公式能识别的区域引用。公式里的单引号是为了兼容带空格或特殊字符的工作表名称,避免报错。
脚本小优化(可选)
当前脚本在第一个工作表时会因为索引越界报错,给你加个边界判断:
function getPreviousSheet() { const activeSheet = SpreadsheetApp.getActiveSheet(); const activeIndex = activeSheet.getIndex(); // 如果是第一个工作表,返回自身名称避免报错 if (activeIndex <= 1) return activeSheet.getName(); const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); const previousSheetIndex = activeIndex - 2; return sheets[previousSheetIndex].getName(); }
内容的提问来源于stack exchange,提问作者rosewindshield
相关产品推荐
相关产品推荐

