excel如何自编能删减数据的函数~~

发布时间:2024-05-13 03:54 发布:上海旅游网

问题描述:

一列有大概30000个数据,但是由于采集点过于密集,根本不需要如此多的数据,想每三个数一平均,然后输出到隔壁列中,这样就变成10000个数据了,但问题是,怎么编这个函数哦呢?~还有就是自编函数在哪里写哇? 没找到~~

谢谢指点啦 ^_^
哎呀呀,非常感谢下面同志们的回答,可是老师要求我自己编程序,不要直接用excel自带的average函数哇~~就是我自己用function什么的 自己编~~ 呜呜之~~

谢谢你们噢

问题解答:

用函数是否能够实现,现在不知道。如果用VBA来实现,很容易做到。参考如下:
新建一个宏名为“数据采集”,然后编辑它,输入如下代码即可:

For i = 1 To 30000
Cells(i, 2) = (Cells(3 * i - 2, 1) + Cells(3 * i - 1, 1) + Cells(3 * i, 1)) / 3
Next i

解释:本代码是假定30000个数据全部处在第一列A1上,所以cells(3*i,1)中的1指代的是第一列,如果是第三列,则变成为3即可;输出的数据全部放在第二列A2上,所以cells(i,2)中的2即指代第二列,如果是放在第五列,则变为5即可。cells(3*i,1)中的3指代的是每三个数相加后取平均数,如果是每6个数相加后取平均数,将3*i和/3中的3改为6即可。其他情况一次类推。这样的VBA实现很简单的。

然后运行该宏,就自动实现你的目的了。

比如A列从A1开始是数据,三个点取一个到B列
B1输入=INDIRECT("A"&ROW(A1)*3-2),然后下拖就可以了
这样B2=A4,B3=A7,。。。

假设数据保存于A1:A30000,则如下操作

1.在单元格B1中输入公式如下
=AVERAGE(INDIRECT("A" & ((ROW(B1)-1)*3+1)):INDIRECT("A" & ((ROW(B1)-1)*3+3)))

2.复制B1单元格,选中B1:B10000,粘贴即可。

[=SUM(OFFSET($A$1,(ROW()-1)*3,,3))/3]
向下复制后至10000行结束。

假如数据在A列,从A1开始,则将B1到B3合并,在合并后的单元格中输入“=average(A1:A3)”然后向下复制至最后一个单元格中,聪明的你^~^OK?

A B
1
2
3 =(A1+A2+A3)/3
4
5
6
.
3000

在B3输入公式=(A1+A2+A3)/3,然后选定B1、B2、B3点住三个单位格下面十字标往下拉即可

热点新闻