-1

和积

我在左边有一个银行登记簿。我想要一个右侧的代码来告诉我该月支付“租金”描述的所有时间。我尝试过 index、sumproduct 和 sumif。我找不到按月、年和文本搜索的正确方法。

4

2 回答 2

1

目前尚不清楚您的表格是什么格式。

SUMIFS是最简单的解决方案,但只有在银行登记使用 Excel 日期格式时才有效。如果这些日期被格式化为文本,它会变得有点复杂。

构建SUMIFS公式从 SUM RANGE 开始。这是一个远离向后结构和错误命名的可喜变化(如果你问我SUMIF,看起来更像是一个)IFSUM

=SUMIFS(SUM RANGE, CRITERIA 1 RANGE, CRITERIA 1, CRITERIA 2 RANGE, CRITERIA 2, CRITERIA 3 RANGE, CRITERIA 3...)

使用您的示例:

  • SUM RANGE,银行寄存器的“借方”列 (BankRegisterDebitRange)

  • CRITERIA 1 RANGE, 银行寄存器的“描述”列 (BankRegisterDescriptionRange)

  • Criteria 1,字符串“租金”

  • Criteria 2 Range,银行寄存器的“日期”列 (BankRegisterDateRange)

  • Criteria 2, 这个公式字符串">="&EOMONTH(RentTableDate,-1)+1

  • Criteria 3 Range,银行寄存器的“日期”列 (BankRegisterDateRange)

  • Critera 3, 这个公式字符串"<="&EOMONTH(RentTableDate,0)

把它放在一起:

=SUMIFS(BankRegisterDebitRange, BankRegisterDescriptionRange, "Rent", BankRegisterDateRange, "=>"&EOMONTH(RentTableDate, -1)+1, BankRegisterDateRange, "<="&EOMONTH(RentTableDate, 0))

如果您的数据格式为文本,那么您需要决定是否要使用辅助列或是否需要单个公式。如果您想使用SUMIFS简单的公式或执行其他分析,则可能需要辅助列。如果您不想要帮助列,则可能需要使用不同的基于数组的公式,例如SUMPRODUCTor SUM

已经有很好的答案展示了如何使用,所以这里有一个示例,说明如何在数据格式为文本时SUMPRODUCT构建数组公式。SUM

=SUM((BankRegisterDebitRange)*(BankRegisterDescriptionRange="Rent")*(DATEVALUE(BankRegisterDateRange)=>(EOMONTH(RentTableDate,-1)+1))*(DATEVALUE(BankRegisterDateRange)<=MONTH(RentTableDate,0))) 

这是一个真正的数组公式,必须使用 Ctrl + Shift + Enter 输入

我在测试期间对我的一些结果感到惊讶。主要是 Excel 如何在某些情况下仍将文本视为日期,但在其他情况下则不然。例如,DATEVALUE在银行登记方面需要,但租表不是这种情况,因为EOMONTH没有它也可以正常工作。我相信这与另一个奇怪的行为有关:当我在其中创建一个文本格式的单元格A1然后输入一个日期时,无论它前面是否有撇号,然后如果我输入=A1+1任何其他单元格,该单元格就会被格式化为文本并显示 Excel 中日期后一天的数值A1。我所期望的是一个#Value!错误。我怀疑这就是EOMONTH避免疯狂的原因,并且数组的神秘本质以某种方式阻止了这种行为延续到SUMIFS...但我真的不知道为什么会这样。

于 2019-10-09T02:13:18.843 回答
1

解决方案

假设您有以下命名范围

  • BankDate是您的银行登记表中的日期列;
  • Desc是您的银行登记表中的描述列;
  • Dr是您银行登记表中的借方列。

如果查找日期为text,则可以使用以下公式:

=SUMPRODUCT((Desc="Rent")*(TEXT(BankDate,"mmm yyyy")=G2)*Dr)

如果查找日期为date,则可以使用以下公式:

=SUMPRODUCT((Desc="Rent")*(TEXT(BankDate,"mmm yyyy")=TEXT(G4,"mmm yyyy"))*Dr)

更改G2或更改G4上述公式以适合您的实际情况。

逻辑是使用TEXT函数将其转换BankDate为与查找日期相同的格式,然后使用SUMPRODUCT函数按月返回租金。

附言。使用SUMPRODUCT可能有点矫枉过正,因为@ProfoundlyOblivious 建议的SUMIFS实际上在 excel 计算中更快。

PS2。正如@ProfoundlyOblivious 所指出的,Excel 中有一个有趣的行为,即在某些情况下将文本日期视为“真实”日期。虽然它可能与这篇文章的问题无关,但我想在这里为任何感兴趣的人分享我的一些测试结果:

测试

于 2019-10-09T02:55:45.520 回答