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

Google Sheets多条件过滤计算库存余额问题求助

解决Google Sheets多条件库存余额计算问题

一、公式方案(优先推荐)

直接用SUMIFS函数处理多条件求和,这是Google Sheets原生的多条件统计工具,比IF+ISBLANK的组合更稳定可靠。

基础计算逻辑(入库减出库)

假设数据列对应关系:

  • 入库数量:B:B
  • 出库数量:C:C
  • 产品名称:A:A
  • 项目:D:D
  • 部门:E:E

计算指定产品、项目、部门的库存余额,公式如下:

=SUMIFS(B:B, A:A, "目标产品", D:D, "目标项目", E:E, "目标部门") - SUMIFS(C:C, A:A, "目标产品", D:D, "目标项目", E:E, "目标部门")

简化合并公式

用数组将入库、出库合并,一次完成计算:

=SUM(SUMIFS({B:B,-C:C}, A:A, "目标产品", D:D, "目标项目", E:E, "目标部门"))

支持空条件(允许不指定项目/部门)

如果需要适配“不填某条件则统计所有对应项”的场景,结合IF(ISBLANK())动态生成条件:

=SUM(SUMIFS({B:B,-C:C}, 
  A:A, F2, 
  D:D, IF(ISBLANK(G2), "", G2), 
  E:E, IF(ISBLANK(H2), "", H2)
))

其中F2为产品条件单元格,G2为项目条件单元格,H2为部门条件单元格——单元格为空时,匹配所有空值行;若需匹配所有非空值,将""替换为"<>"即可。

二、Google Apps Script方案

如果公式无法满足复杂定制逻辑,可通过自定义函数实现更灵活的计算:

自定义函数代码

打开Google Sheets的「扩展程序」→「Apps脚本」,粘贴以下代码(根据你的实际列索引调整):

function CALCULATE_STOCK(product, project, department) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("数据"); // 替换为你的数据工作表名称
  const data = sheet.getDataRange().getValues();
  let totalIn = 0;
  let totalOut = 0;

  // 跳过表头,从第二行开始遍历数据
  for (let i = 1; i < data.length; i++) {
    const row = data[i];
    // 替换为你的实际列索引(0代表第一列)
    const currProduct = row[0];
    const currProject = row[3];
    const currDept = row[4];
    const inQty = row[1] || 0;
    const outQty = row[2] || 0;

    // 条件匹配:参数为空则忽略该条件判断
    const matchProd = product === "" || currProduct === product;
    const matchProj = project === "" || currProject === project;
    const matchDept = department === "" || currDept === department;

    if (matchProd && matchProj && matchDept) {
      totalIn += inQty;
      totalOut += outQty;
    }
  }
  return totalIn - totalOut;
}

使用方法

在工作表单元格中直接调用函数,支持手动输入条件或引用单元格:

=CALCULATE_STOCK("产品A", "项目1", "部门甲")
// 或引用条件单元格
=CALCULATE_STOCK(F2, G2, H2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:08:37