Excel函数之if、vlookup、indirect

Excel函数通过实操学习比起看神马的教程有效多了,当然,要有实操的机会,今天老大让我在后台里面导出3天的数据,并提取出其中的数据整理成固定的样式为后面的分析做准备。

任务

Excel函数之if、vlookup、indirect_第1张图片

(数据已经过随机数处理)

1. 分析

Excel函数之if、vlookup、indirect_第2张图片

将左侧无间隔行的排列方式转变为右侧有间隔行的排列方式。方法其实多种多样,最先能想到的两种方法是① 选中左侧所有的偶数行并插入行 ② 根据左侧行由函数生成右侧行。最终决定用第二种方法试一试,那样就是一个纯数学问题了。

2. 准备工作

Excel函数之if、vlookup、indirect_第3张图片

为了更方便的提取数据,我把三天的数据分别贴在了3个sheet里面

3. 函数运用

3.1 格式转换

注意到右侧单数行对应于左侧的值,具体的是右侧的单元格的内容对应于其行数除以2再加1,这需要用到indirect函数做定位。而右侧双数行的值全部为空。显然这里涉及到了一个判定条件,要用到if。

那么函数可以写为:

=if(MOD(ROW(), 2), INDIRECT(ADDRESS(ROW()/2+1, 1)), "")

写好后直接往下拖动即可,生成下面右侧所示的排列格式,接着将它复制到主表了里面。

Excel函数之if、vlookup、indirect_第4张图片

3.2 数据提取

Excel函数之if、vlookup、indirect_第5张图片

单数行是第一列对应值的uv,双数行是第一列对应值的pv。

判定单双数依旧是用if(MOD(ROW(),2),,)来实现。

单数的时候,以8月23日为例子。vlookup(A3, '0823'!$E$1:$G$50, 3, false)

双数的时候,这个时候vlookup的需要用INDIRECT函数做定位,写作

VLOOKUP(INDIRECT(ADDRESS(ROW()-1,COLUMN()-1)),'0823'!$E$1:$G$50,2,FALSE),其中INDIRECT(ADDRESS(ROW()-1,COLUMN()-1))表示的是目标单元格左上角单元格的值。注意到这里对于数据区域均作了绝对引用。

所以最后写出来的函数是:

=IF(MOD(ROW(),2),VLOOKUP(A3,'0823'!$E$1:$G$50,3,FALSE), VLOOKUP(INDIRECT(ADDRESS(ROW()-1,COLUMN()-1)),'0823'!$E$1:$G$50,2,FALSE))

接下来的工作就只需要往下拖动单元格就能得到想要的结果啦:)

你可能感兴趣的:(Excel函数之if、vlookup、indirect)