【问题标题】:Return the sum of values from a column (C) when conditions are meet in both Column B and Column A当 B 列和 A 列都满足条件时,返回列 (C) 中的值的总和
【发布时间】:2021-07-20 19:37:04
【问题描述】:

对不起,如果标题令人困惑......很难为我正在尝试做的事情命名,并希望使用 VBA 来帮助完成以下工作。

我有一张贷方和借方的表格。 3 个人(Alex、Bill 和 Charlie)互相借钱和借钱,我的表格显示了每笔交易:

我想对每个可能的组合的所有值求和,并为每个组合返回一个值,该值显示谁欠谁的钱和多少钱:

然后根据这个节目谁欠谁,他们欠多少……所以在上面的例子中,查理欠比尔 434 美元,但比尔欠查理 48 美元,所以查理只欠比尔 386 美元:

这可能吗...我可以使用 If 语句手动完成并隐藏公式行等...而且 3 个人(6 种组合)还不错,但如果我添加第四个人,它将是 24 种组合,所以我正在寻找一种更简单的方法。

提前致谢!

【问题讨论】:

  • 这可以纯粹用 SQL 来完成,但是你的数据结构有一个明显的问题——如果两个人同名怎么办?
  • 第一步,结合匹配的贷方/借方排列,只需将其放入数据透视表即可。
  • 谢谢马丁 - 在我将使用的现实生活数据中,我将拥有唯一标识符而不是名称

标签: vba


【解决方案1】:

这里有一个公式的解决方案:

以下是列公式:

A: Lender
B: Borrower
C: Amount
D/E: =UNIQUE(A:B)
F: =D1&"-"&E1 
G: =SUMIFS(C:C,A:A,D1,B:B,E1)
H: =E1&"-"&D1
I: =XLOOKUP(H1,F:F,G:G,0)
J: =IF(K1<>"",E1&" owes "&D1,"")
K: =IF(G1-I1>0,G1-I1,"")
L: =K1<>""
M: =FILTER(J:K,L:L)

列 F 到 L 应填写至少足够长的时间,以涵盖贷方和借方的可能组合。您可以填写比需要更多的内容 - 多余的行将被忽略。

然后,隐藏除 A、B、C、M 和 N 之外的所有列。

【讨论】:

  • 这应该可以工作,而且比我做的更干净,谢谢
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 2022-10-07
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多