Excel批量自动处理数据——indirect与averageifs

在很多工作里,我们都会接触到大量固定格式的数据,大部分还可以用Excel打开,面对这些数据的处理,专业点的一般是编程处理,譬如matlab,Python和 R语言都是非常好用的。但是很多童鞋没接触过编程,也没时间学习或者对编程不感冒,所以我们今天介绍下用Excel批量处理下这样的数据,其思想与编程一样。

1. 取自己想要的值indirect ()

假如我们有个固定格式的数据文件,通过excel分隔符方式打开后每次都是下面这样子:


4025027-55b96420f461fe6d.jpg
原始数据文件

现在我们新建一个sheet,每次我把这个sheet复制到要处理的excel数据文件中,然后输入要处理的工作表名,它会立刻自动处理好数据如下图(这里是小时平均数据):

4025027-aeff6c1c4fa587f0.jpg
最终效果

下面我们用indirect (把数据自动拿来)和__ averageifs__(根据条件平均)来实现这个功能。
在A4和B4单元格分别输入下面函数即可:

% 拿来sheet “AE33_AE33-S03-00287_20161127” 中的A, B列并合并,从第9行开始

=INDIRECT("'"&$B$1&"'"&"!"&"A"&ROW(A9)) + INDIRECT("'"&$B$1&"'"&"!"&"B"&ROW(A9)) 

% 拿来sheet “AE33_AE33-S03-00287_20161127” 中的BD列,从第9行开始

=INDIRECT("'"&$B$1&"'"&"!"&"BD"&ROW(A9))  

这里的原理是跨工作表取值是这样的形式
='sheet1'! A9
只要在想办法输入indirect('sheet1'! A9)即可取到工作表sheet1里的A9单元格里的值。

2. 任意时间平均averageifs ()

这里我们以小时平均为例。
首先我先输入要平均的时间如下图:


4025027-29a1114f92f09b7d.jpg
Average time range

这个时间只需要第一次编辑好,然后取工作表中的日期合并上即可实现自动化。
这里我是输入以下函数:

=DATE(MID($B$1,21,4),MID($B$1,25,2),RIGHT($B$1,2)) + TIME(ROW(B1), 0, 0)

然后再在E4单元格里输入:

=AVERAGEIFS(B:B,A:A,">="&G4,A:A,"<="&H4)

向下拖动,大功告成。
最后在average time range里输入任意想要平均的时间,都可以的,特别是很多时候我们希望去除开头结尾某些时间范围的点,这个就比透视表好用多了。
类似的函数还有
sumifs
minifs
maxifs
countifs

3. 自动化

上面的Excel做好后即可存下来备用。然后需要处理数据的时候,直接复制到相应的excel文件里,最后copypaste工作表名称到input里即可,如下图:

4025027-99d0c54be8423c94.jpg

4025027-636d4cd824f5d55c.jpg
复制工作表到要处理的Excel文件里
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值