0

我有一张包含多行数据的表格,其中包含许多列。我正在寻找一个公式的帮助,该公式将根据输入的最后 5 个值连续提取最小 3 个数字的总和。请注意,并非所有行的每列都有值,因此在每行上找到的第一个值可能会在不同的列中找到。

为了确定最小的 3 的总和,我使用了公式=SUM(SMALL(B3:R3,{1,2,3})),不幸的是,该公式正在查看整个范围。同样,我正在寻找一个仅选择最后 5 个发布值的公式的帮助。

这是一个简单的例子。每行的结果显示应确定的总数。同样,它需要根据最后 5 个发布的内容来查找最小的 3 的总和(在下面的示例中,范围是第 1 列到第 10 列,第 10 列具有最新发布的内容)。

前任。
1......2......3......4......5......6......7......8...... .9.......10...... 结果
31............44......51......36............44...... 34....36....38....106 (34+36+34)
35..31...44...40....38...52.. ........42....37........115 (37+38+40)

希望这是可以理解的。由于我的用户,我正在寻找公式解决方案与 VBA 宏解决方案。谢谢你的帮助!!

4

1 回答 1

0

既然你已经澄清了这个问题,我有一个答案给你。这是相当丑陋的,但它完成了工作。您可能想要隐藏具有中间结果的列 - 或者您可以冒险并“嵌套”表达式。这使得它很难理解/调试。如果有更聪明的方法可以做到这一点,我总是乐于学习。

假设您有数据列中AJ从第 2 行开始,将以下内容放入单元格中L2:P2

=MATCH(9999, A2:J2,1)
=MATCH(9999,OFFSET($A2,0,0, 1, L2-1))    ... copy this by dragging right to the next 2 columns
=MATCH(9999,OFFSET($A2,0,0, 1, M2-1))
=MATCH(9999,OFFSET($A2,0,0, 1, N2-1))
=MATCH(9999,OFFSET($A2,0,0, 1, O2-1))

第一行查找最后一个包含数据的单元格;下一个找到最后一个单元格“不包括最后一个单元格”,因此它们向后工作。结果是对应于数据列的数字。对于您的示例,这给出了

10  9  8  7  5
 9  8  6  5  4

现在我们要找到其中最小的 3 个的总和:将以下等式放入单元格中Q2

=SUM(SMALL(INDIRECT("RC["&P2-17&"]:RC["&L2-17&"]",FALSE),{1,2,3}))

从内到外工作:

RC["&P2-17"]        results in RC[-12], which is "the cell 12 to the left of this one".
                    That is the first of the "last five cells with data", cell E2
RC["&L2-17"]        results in RC[-7], the last cell with data in this row
FALSE               use "RC" rather than "A1" indexing
INDIRECT            turn string into an address (in this case a range)
SMALL               find the 3 smallest values in this range
SUM                 and add them together.

这个公式确实给了我106, 115你提供的例子。

我会隐藏从 L 到 P 的列,所以你只能看到结果(而不是中间的东西)。

于 2013-10-01T00:54:20.527 回答