在 Excel 2010 中将数值集中到某个范围内的总计
给定一列数值,是否可以对值进行求和,直到总数达到特定阈值,然后重置总和并继续?例如,
Val Sum
103
52 155
47
60
103 210
100
76 176
163 163
169 169
87
103 190
84
31
59 174
87
49
67 203
这对数字组进行求和,直到值超过 150,然后重置计数器。
Given a column of numeric values, is it possible to sum values until the total reaches a particular threshhold, then reset the sum total and continue? for example
Val Sum
103
52 155
47
60
103 210
100
76 176
163 163
169 169
87
103 190
84
31
59 174
87
49
67 203
This sums groups of numbers until the value exceeds 150, then resets the counter.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我将发布它更多的是为了概念证明,而不是真正的答案,或者为了我可以改进这个的情况(Issun 可能也有一个想法)。
这里是:
假设您的 Val 位于
A 列
,Sum 位于B 列
,标题位于第 1 行
。在
C 列
中,我们将设置一个公式,该公式将告诉您求和的“最后一个”单元格 > >在单元格C3
中,输入:这是一个数组公式,您必须使用 CtrlShiftEnter 进行验证。
在单元格
B3
中,您必须输入第一个值(示例中为 155),抱歉,我没有找到合适的解决方法。在单元格
B4
中,输入:然后将其拖至删除公式直到值的末尾。
[编辑] 实际上,您可以将其全部放入单元格
B2
中的单个公式中:并将其拖放到值的末尾。似乎也有效。
i'll post it more for the proof of concept than a real answer or for the case i could improve this (Issun may have an idea too).
Here it is:
Let assume your Val is in
column A
and Sum incolumn B
and Titles are inrow 1
.In
column C
, we will set a formula that will tell which is the "last" cell where you sumed it up > in cellC3
, put:This is an array formula, you will have to validate with CtrlShiftEnter.
In cell
B3
, you will have to put the first value (155 in your example), sorry, i didn't find a proper workaround.In cell
B4
, put:Then drag & drop the formulas till the end of your values.
[EDIT] Actually, you could put it all in a single formula in cell
B2
:and drag and drop it till the end of your values. Seems to work too.
最简单的方法(不需要数组公式,更不用说 VBA):
在 B2 中,输入
=IF(B1<150,B1+A2,A2)
并向下拖动。其总和将达到 150 或更多,然后从零重新开始。当然,中间的总和(即达到 150)也会显示。如果这让您烦恼,您会想到以下几个选项:=IF(B2>=150,B2,"")
并向下拖动,然后隐藏 B 列。Simplest way to do it (no need for array formulas let alone VBA):
In B2, type
=IF(B1<150,B1+A2,A2)
and drag down. This will sum until it reaches 150 or more, and then restart at zero. Of course, the intermediate sums (i.e. on the way up to 150) will show as well. If this bothers you, a couple of options spring to mind:=IF(B2>=150,B2,"")
in C2 and drag down, and hide column B.这是 VBA 中的解决方案(抱歉,我知道您想要一个论坛)。显然,您可以将范围调整为您需要的任何值。请注意,我使用 LONG 作为数据类型(并且我将其转换为 long 以避免出现一些错误),但如果您有任何浮点数,则需要使用 DOUBLE。
工作原理:我循环遍历范围内的每个单元格,并将值添加到名为 currentCount 的变量中。然后我检查它是否超过 150,如果是,我将 currentCount 粘贴到 B 列(同一行)并重置计数并移至下一个单元格。简单的!
Here's a solution in VBA (sorry I know you wanted a forumula). You can obviously tweat the range to be whatver you need it to be. Please note I used LONG as data type (and I am casting to long to avoid some errors), but you need to use DOUBLE if you have any floating point numbers.
How it works: I loop through each cell in the range and add the value to a variable called currentCount. I then check if it's over 150, if it is I paste the currentCount to the B column (same row) and reset the count and move to the next cell. Simple!