【问题标题】:Excel formulas to group and summarize data with smallest and largest in the groupExcel 公式对组中最小和最大的数据进行分组和汇总
【发布时间】:2014-06-29 10:52:22
【问题描述】:

我有以下格式的数据

前两列显示原始数据。不同数据集之间可能存在空白,也可能不存在。

列 G、H 和 I 是我想要实现的摘要。我曾尝试使用 excel 的 data->subtotal、group、ungroup 功能,但它们都不会导致以下结果。我不知道如何解决这个问题。原始数据中的行数将在 200 到 500 项之间。

我绝对可以做一些手动工作来分离组,然后为它们应用最小和最大值的公式,但我正在寻找汇总的完全自动计算。这样当我在前 2 列中输入数据时,它应该会自动在 G、H 和 I 列中返回摘要。

编辑: 我尝试了 C 列中的数组公式 =MAX(IF(A1:A101=A2,B1:B101)) 来找出每个组的最大值。结果如下,您可以看到每组的第一行正是摘要中所需的。我们能否以某种方式删除重复项,以便只留下每组的第一行。

仍然需要我将公式放入 C 列并选择原始数据的范围。这不是我要找的。我需要一些可以自动计算的东西。

【问题讨论】:

  • 通过 Excel 很难。使用 VBA。
  • VBA 不适合我。我正在寻找基于函数的解决方案
  • 我已经弄清楚如何为每个组放置一个具有最大值的列。现在问题被简化为在不影响最大值计算的情况下删除重复项。由于每组的第一行正是所需的,因此删除重复项将给出所需的结果。不知道如何在不影响最大计算的情况下做到这一点。

标签: excel excel-formula


【解决方案1】:

按照这个方案:

在 D2 单元格中输入:

=IF(A3=A2,"",IF(A2="","",A2))

在单元格 E2 中:

=IF(D2="","",VLOOKUP(A2,$A$2:$B$19,2,))

在单元格 F2 中:

=IF(D2="","",B2)

和自动完成...
你有图片中的方案。在您可以在 D:F 列上使用过滤器删除空白之后。
最终,您可以将 D-F 列放入另一张表中。
改变道路... Sheet1 有原始数据,您可以做任何您想做的事情(删除、插入、ecc)。
在第二张纸上,您需要像图片一样进行更改:

在 D 列中,您输入带有数据地址和Sheet1!A2 的文本,并使用自动完成功能制作 1000 行...在第 3 列中替换为:

Column E: =IF(INDIRECT(D3)=INDIRECT(D2);"";IF(INDIRECT(D2)="";"";INDIRECT(D2)))
Column F: =IF(E2="";"";VLOOKUP(INDIRECT(D2);Sheet1!$A$2:$B$1003;2;))
Column G: =IF(E2="";"";OFFSET(INDIRECT(D2);0;1))

和自动完成。
现在人们只能在 sheet1 上随心所欲地进行编译,而 Sheet2 上的数据总和...

【讨论】:

  • 看起来不错,但有几个问题。首先我不确定会有多少条目,那么我们如何提前将公式放入E列?其次,如果在输入原始数据后需要将公式放入列中,那么每次我们都需要重复相同的步骤吗?第三,用户需要手动进行排序、过滤和复制粘贴到另一个工作表中的列,我们如何才能自动化这部分呢?
  • 这就是我谈论 VBA 的原因。这一切都是自动化的......问题=原始数据是通过自动化到达的?如果是,您只能复制和粘贴预编译表。 1)使用自动完成,您可以第一次自动完成,例如 1000 行。如果行为空,该公式也有效。 2)看我的问题。 3)轻松选择列 D-F 并粘贴,或者您可以使用包含所有公式的基本表并将原始数据粘贴到 A-B 列中。
  • 我现在要试试你的公式。让我们看看进展如何。
  • 数据将由用户一次输入一行。稍后将在外部自动执行(与此 excel 计算无关)
  • 不完全理解您最后的评论。我不知道预编译表。也不明白基片的概念。您能否进一步解释一下。我已经尝试过你的技术,只要我在完全获取原始数据然后输入公式、过滤空格等之后应用它,它就可以工作。当我之后尝试输入新行时,它不会给出所需的结果.我已经复制了 1000 个单元格中的公式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多