从当前细胞到先前非空白细胞的平均值优异

时间:2014-10-23 07:48:47

标签: excel

继续我的任务:excel multiple average in single column

我最近搬到excel 2013,我已经知道我的文件有180k行,因此建议的公式没有考虑(它用于大量内存和我的电脑崩溃)。

我对解决方案的想法是在产品编号更改时使用标记创建另一列:

A | B | C | D

1 | 0:17 | “”|“”|
1 | 0:18 | “”| “”| 。

1 | 0:19 | 0:18 | 1 |
2 | 1:12 | “”| “”| 2 | 1:12 | “”| “”| 。

2 | 1:13 | 1:12.6 | 1 |
3 | 0:45 | 0:45.0 | 1 |

并且仅在两个非空白单元格之间取平均值。如何从E列获得非空白单元格的地址?如何在不计算整列的情况下获取非空白单元格的地址? 我试过了: C栏:

=IF(D1=1;AVERAGEIF((value in)E1:D1;A1;B$1:B1);"")

它应该从我当前的单元格到D中的前一个非空白单元格的平均值 - 产品名称的最后一次更改

D栏:

=IF(A2=A3;"";1)

E栏:

=ADDRESS(LOOKUP(1,1/(D:D<>""),ROW(D:D)),1)

获取非空单元格的单元格地址,但是它再次计算整列,所以我什么都没解决。

请求帮助!

1 个答案:

答案 0 :(得分:0)

在Cell C1中放1 在单元格C2中输入= IF(A2 = A1,C1 + 1,1)并向下复制:这将计算产品编号的连续出现次数
在Cell D1 put = IF(A2 A1,AVERAGE(OFFSET(B1,0,0,C1 * -1,1)),&#34;&#34;)并向下复制偏移抓取单元格以平均最后一个相邻的产品编号块。

这应该很快计算,但缺点是OFFSET是不稳定的,所以D列会在每次重新计算时重新计算。