如何用Query函数根据交易类型将金额转为正负值(Google Sheets)
Google Sheets 支票簿自动计算交易金额正负(含转账/信用卡还款)
问题背景
用Google Sheets管理支票簿,通过表单离线录入交易后同步到工作表,需要根据交易类型自动将金额(绝对值)转为对应正负值,无需手动输入+/-,同时支持信用卡还款场景:储蓄账户记为Withdrawal(负值),信用卡账户记为Deposit(正值)。
表格结构
- 工作表
Form Responses:- B列:交易发起账户
- C列:交易类型(
Withdrawal/Deposit/Transfer/Payment) - D列:转账/还款目标账户
- E列:交易金额(绝对值)
- F列:交易描述
- 当前工作表A2单元格:需查询的目标账户名称
正确公式
将以下公式输入到目标单元格(比如当前工作表的B2):
=QUERY('Form Responses'!B:F, "SELECT F, CASE WHEN C='Deposit' AND B='"&A2&"' THEN E WHEN C='Withdrawal' AND B='"&A2&"' THEN -E WHEN C='Transfer' AND B='"&A2&"' THEN -E WHEN C='Transfer' AND D='"&A2&"' THEN E WHEN C='Payment' AND B='"&A2&"' THEN -E WHEN C='Payment' AND D='"&A2&"' THEN E ELSE 0 END, C, D WHERE B='"&A2&"' OR D='"&A2&"' ORDER BY 'Form Responses'!A DESC", 0)
公式说明
核心逻辑(CASE语句)
根据交易类型和目标账户的角色(发起/接收)自动计算金额正负:
- Deposit:目标账户是发起账户(B列)→ 金额为正(+E)
- Withdrawal:目标账户是发起账户(B列)→ 金额为负(-E)
- Transfer:目标账户是发起账户(转出)→ 负;目标账户是接收账户(转入)→ 正
- Payment(信用卡还款):目标账户是还款发起方(储蓄账户)→ 负;目标账户是信用卡(接收方)→ 正
其他参数
WHERE B='"&A2&"' OR D='"&A2&"':筛选所有涉及目标账户的交易ORDER BY 'Form Responses'!A DESC:按表单提交时间倒序排列,最新交易优先显示- 最后参数
0:表示查询结果不包含表头(若需要表头可改为1)
注意事项
- 确保交易类型的拼写与
Form Responses中C列完全一致(大小写、空格都要匹配) - A2的账户名称必须和B、D列的账户名称完全相同,否则无法匹配交易
- 可根据需求调整
SELECT后的列,比如不需要显示交易类型和目标账户,可删除, C, D
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

