You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets多工作表:嵌套Filter/Query实现公司发票详情展示

解决方案:按公司ID展示所有发票详情

方法一:使用公式直接实现(无需修改表格结构)

你可以通过IN操作符嵌套两个FILTER,结合TEXTJOIN来在单个单元格中合并某公司的所有发票详情:

=TEXTJOIN(CHAR(10), TRUE, FILTER(InvDetails!B:B, InvDetails!A:A IN FILTER(Invoices!B:B, Invoices!A:A=CompanyInfo!A2)))

公式说明:

  1. 内层FILTER(Invoices!B:B, Invoices!A:A=CompanyInfo!A2):提取目标公司(CompanyInfo!A2)对应的所有发票号
  2. InvDetails!A:A IN [...]:筛选出发票详情表中,发票号属于上述结果的行
  3. TEXTJOIN(CHAR(10), TRUE, ...):将所有匹配的详情用换行符(CHAR(10))合并,TRUE参数会自动忽略空值

如果需要更灵活的格式控制,也可以用QUERY函数关联两张表:

=TEXTJOIN(CHAR(10), TRUE, QUERY({Invoices!A:B, InvDetails!A:B}, "SELECT Col4 WHERE Col1='"&CompanyInfo!A2&"' AND Col2=Col3", 0))

方法二:用Apps Script给InvDetails表添加公司ID字段(更易维护)

如果需要长期方便过滤,可以通过脚本给InvDetails表批量添加对应公司ID,之后就能直接用简单的FILTER实现需求:

步骤1:添加脚本

  1. 打开你的Google表格,点击顶部菜单「扩展程序」→「Apps 脚本」
  2. 清空默认代码,粘贴以下脚本:
function addCompanyIdToInvDetails() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const invoicesSheet = ss.getSheetByName('Invoices');
  const invDetailsSheet = ss.getSheetByName('InvDetails');
  
  // 构建发票号→公司ID的映射表
  const invoiceMap = {};
  invoicesSheet.getDataRange().getValues().forEach(row => {
    if (row[0] && row[1]) invoiceMap[row[1]] = row[0];
  });
  
  // 给详情表添加公司ID列
  const updatedData = invDetailsSheet.getDataRange().getValues().map((row, idx) => {
    if (idx === 0) return ['Company ID', ...row]; // 表头
    const companyId = invoiceMap[row[0]] || '';
    return [companyId, ...row];
  });
  
  // 更新表格内容
  invDetailsSheet.clearContents();
  invDetailsSheet.getRange(1, 1, updatedData.length, updatedData[0].length).setValues(updatedData);
}
  1. 点击工具栏的「运行」按钮,首次运行需要授权脚本访问你的表格数据

步骤2:使用新增字段过滤

脚本运行后,InvDetails表最左侧会新增「Company ID」列,之后直接用以下公式就能获取某公司的所有发票详情:

=TEXTJOIN(CHAR(10), TRUE, FILTER(InvDetails!C:C, InvDetails!A:A=CompanyInfo!A2))

内容的提问来源于stack exchange,提问作者Remmerboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 02:23:10