美文网首页
Excel批量自动处理数据——indirect与averagei

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

作者: 徘甚 | 来源:发表于2016-12-14 00:03 被阅读0次

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

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

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


    原始数据文件

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

    最终效果

    下面我们用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 ()

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


    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里即可,如下图:


    复制工作表到要处理的Excel文件里

    相关文章

      网友评论

          本文标题:Excel批量自动处理数据——indirect与averagei

          本文链接:https://www.haomeiwen.com/subject/zuwbmttx.html