按唯一ID

时间:2018-02-09 13:43:14

标签: excel excel-formula

这个公式出了问题我无法解决这个问题。我想要做的是计算每个合约过期的发票金额。 id - 换句话说,我们提出这样一个问题:每个公司都有多少次过度发票?

我在这里创建了一个示例表,以便于演示 列分别为A,B,C等。行的逻辑相同

Co. ID | Invoice | Days Past Due
221    | 1812    | 2
221    | 1813    | Not past due yet
221    | 1814    | 5
458    | 3548    | 3
954    | 3214    | Not past due yet

这是预期的结果(在另一个表中) 为清晰起见,我们调用D和E列

Co. ID | Amount of Overdue Invoices
221    | 2            // <- 2 overdue, 1 not past due = 2 overdue
458    | 1
954    | 0

我最接近一个至少在某种程度上有意义的形式是:

=COUNTIF($C$2:$C$6, ISNUMBER(VLOOKUP($D$2, $A$2:$A$6, 1, 0))

虽然显然不起作用,因为vlookup返回索引的单个值,但这是我能想到的关于如何过滤列表的最接近的事情。

从理论上讲我正在尝试做的事情:

  1. 按公司ID划分数据(因此我们只处理与特定公司ID相关的数据)
  2. 如果截止日期是一个数字,请将结果增加1
  3. 一旦Co. ID不再匹配就退出循环(我们只想要与1个特定公司相关的数据,然后转到下一个)
  4. 退货结果(每个公司ID的逾期发票金额)。
  5.   

    从技术上讲,我知道我可以编写一个vba宏代码,我可以循环整个列并根据它增加i(或任何变量)   事实上,如果过期的天数是一个数字,但我更喜欢这样做   如果可能,请使用公式。

3 个答案:

答案 0 :(得分:2)

我尝试在过去的匹配列中查找大于0的内容,如此

=COUNTIFS(A:A,G2,C:C,">0")

其中G2是“221”Co.ID,这似乎有效。

答案 1 :(得分:0)

您可以计算发票总额 - 尚未到期的发票:

=COUNTIF(A:A;D2)-COUNTIFS(A:A;D2;C:C;"Not past due yet")

答案 2 :(得分:0)

你无法在公式中完全做到这一点。可以将formulaPIVOT

组合使用

步骤1创建一个数据透视并将co.ID拖到Row label 第2步请在下一栏中填写以下公式

=COUNTIFS($F$6:$F$10,J7,$H$6:$H$10,">=0")

更改范围相应

所以当你改变过去的天数时,只需要刷新枢轴。它会为你提供详细信息..

enter image description here