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
相关产品推荐
相关产品推荐

