尚不清楚表的格式。
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
,银行注册的'Description'列(BankRegisterDescriptionRange)
Criteria 1
,字符串“ Rent”
Criteria 2 Range
,银行注册的'Date'列(BankRegisterDateRange)
Criteria 2
,此公式字符串">="&EOMONTH(RentTableDate,-1)+1
Criteria 3 Range
,银行注册的'Date'列(BankRegisterDateRange)
[Critera 3
,此公式字符串"<="&EOMONTH(RentTableDate,0)
将它们放在一起:= SUMIFS(BankRegisterDebitRange,BankRegisterDescriptionRange,“ Rent”,BankRegisterDateRange,“ =>”&EOMONTH(RentTableDate,-1)+ 1,BankRegisterDateRange,“ <=”&EOMONTH(RentTableDate,0))
如果您的数据以文本形式删除,那么您需要决定是否要使用帮助器列,或者是否要使用一个公式。如果要使用SUMIFS
或使用简单的公式执行其他分析,则可能需要一个辅助列。如果您不想要帮助列,例如SUMPRODUCT
或SUM
,则可能需要基于数组的公式。
已经有很好的答案显示了如何使用SUMPRODUCT
,因此,这里有一个示例,说明了当数据被舍弃为文本时如何使用SUM
构建数组公式。
:=SUM((BankRegisterDebitRange)*(BankRegisterDescriptionRange="Rent")*(DATEVALUE(BankRegisterDateRange)=>(EOMONTH(RentTableDate,-1)+1))*(DATEVALUE(BankRegisterDateRange)<=MONTH(RentTableDate,0)))
我对测试期间的一些结果感到惊讶。主要是Excel在某些情况下仍将文本视为日期的方式,而在其他情况下则不是。例如,在银行收银机一侧需要
DATEVALUE
,但在租金表中却不是这种情况,因为EOMONTH
没有它就可以很好地工作。我认为这与另一个奇怪的行为有关:当我在A1
中创建一个文本格式的单元格,然后输入日期时,无论它前面是否带有撇号,然后在其他任何单元格中输入=A1+1
时,该单元格将设置为文本格式,并显示A1
中日期后一天的Excel数值。我所期望的是#Value! error
。我怀疑这是阻止EOMONTH
束缚的原因,而且数组的神秘本质以某种方式阻止了该行为延续到SUMIFS
...,但我真的不知道为什么会这样。
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
函数按月归还租金。Ps。使用SUMPRODUCT可能会过大,因为@ProfoundlyOblivious建议的SUMIFS实际上在excel计算中更快。
让我知道您是否有任何疑问。干杯:)