Excel:唯一日期内每人的最小/最大金额

Excel:唯一日期内每人的最小/最大金额,excel,excel-formula,Excel,Excel Formula,我有一个Excel表格,有3列(请参见下图):日期、姓名(缩写)和花费金额 我想返回每个人每个日期(B31:C33)花费的最小和最大总和(分别)的值 我想到了这样一个公式: {=MIN(SUMIFS(C2:C26,B2:B26=A31,A2:A26))} 或者像这样: {=SUMPRODUCT(--(C2:C26,B2:B26=A31,)} 很遗憾,我无法返回正确的值。如果能得到你的帮助,我将不胜感激 我期待得到一些答复。您的问题可以通过数据透视表得到回答: 假设您想要所有日期的绝对最小值和绝

我有一个Excel表格,有3列(请参见下图):日期姓名(缩写)花费金额

我想返回每个人每个日期(B31:C33)花费的最小和最大总和(分别)的值

我想到了这样一个公式:

{=MIN(SUMIFS(C2:C26,B2:B26=A31,A2:A26))}

或者像这样:

{=SUMPRODUCT(--(C2:C26,B2:B26=A31,)}

很遗憾,我无法返回正确的值。如果能得到你的帮助,我将不胜感激


我期待得到一些答复。

您的问题可以通过数据透视表得到回答:

假设您想要所有日期的绝对最小值和绝对最大值

  • 在“行”中添加首字母缩写,因为在所有日期中,您都希望每个人有一个最小值和一个最大值
  • 在“值”中,您需要花费的金额,而不是总和(显示的是默认值)。。。您可以更改这些值,以便一个显示最小值,另一个显示最大值
遵循以下步骤:

开始 您应该从选择表(A1:C26)开始,然后转到
Insert。。。数据透视表
。我创建了一个只有几个值的虚拟电子表格,因此在我的示例中,我选择了(A1:C10):

步骤1 创建数据透视表后,数据透视表将为空。单击出现的大图标,右侧将出现包含数据透视表字段的菜单。在这里,将名称(缩写)拖到行中,将花费金额拖到值中,两次。然后它会像这样:

步骤2 数据透视表显示了金额的总和,但您需要最小值和最大值。通过单击右侧的信息按钮,然后选择您的预期计算(例如,最小值),可以更改这些值:

步骤3 重复步骤2,并更改为最大值

最终结果 最终结果将是:

我删除了总计,因为它们在
设计中毫无意义。。。总计。。。行和列关闭
。仅当单击数据透视表时,此菜单才会显示

假设您希望在每个日期执行此操作

轻松点!在您已经完成的工作的基础上,只需将Date拖到列中,它将显示每个唯一日期的一个最小值和一个最大值

[编辑]获取列的日期并不能回答问题,但根据注释,如果将其添加到行中会怎么样?你会得到这样的结果:

可以总结成这样的表格,这似乎是您想要的:


首先,很抱歉延迟回答此问题。我在工作中有一系列相当紧急的bug修复需要处理

这是一个数组公式,必须按Ctrl+Shift+Enter确认数组公式

最小-
=SMALL(如果(如果)小的(如果(如果)小的(如果)小的(如果)(C$2:$C$26,$A$2:$A$26,如果($B$2:$B$26=$A$26),$B$2:$B$26,$A$2:$A$26,如果($B$2:$B$26=$A30,$A$A$26),$B$B$2:$B$26,$A30)),1)

最大值-
=大型(如果(假设)假设(假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设:假设

它看起来相当大,让我们来谈谈:

您可能已经注意到,此公式中唯一发生变化的是
SMALL()
LARGE()
,这是因为
SUMIFS()
数组正在处理该“人名首字母”每天的总数

SUMIFS([总计金额],[日期],

我们在此中断,为
SUMIFS()
的条件1生成一个日期数组:

IF([姓名首字母]=[姓名首字母],[日期])

由于这是一个数组,我们最终会得到一个匹配日期的列表或类似的列表:
{43252;FALSE;FALSE;FALSE;FALSE;FALSE;43301;43301;FALSE;43301;FALSE;FALSE;FALSE;FALSE;43342;43342;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;43317;43317}

这是确定的第一个标准,第二个标准只是“姓名(缩写)”

,[name initials],[person initials])

但是,我们现在拥有的是一个0数组,用于表示标准不匹配的地方以及我们希望评估的金额

为了使数据对我们有用,我们利用了Excel的二进制特性,即对于
IF()
语句,0将被读取为
FALSE
结果:

IF([公式结果],[公式结果])

这将
SUMIFS()
结果转换回
FALSE
或我们的总数

我们现在可以自由使用
MIN([formula])
SMALL([formula],1)
来获得我们的最小值

由于如果您有任何匹配的值,0将不会返回最大值,因此您不需要实际执行
MAX([formula])
LARGE([formula],1)

=最大值(如果(SUMIFS($C$2:$C$26,$A$2:$A$26,如果($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30))

再一次,很抱歉耽搁了你,我很感激你能接受这么多,所以请随时提问


欢迎来到SO!这是一篇很好的第一篇文章,如果到那时还没有回答,我很乐意在工作日结束时在35分钟内为这个问题写一个答案。谢谢@Glitch_博士。期待着它!仍在努力,尽管我想我正在接近这个视频:谢谢@AVLZ。很高兴我的头脑清醒了d透视表,因为我从未这样做过,但不幸的是,此方法没有返回正确的值。即使在列部分添加日期。它返回的内容:每个单元格中的最小值,按名称排序。我希望它返回的内容:我希望捕获(I