实习:4.1
模拟需求:
这是源数据:包含所有系统和所有的指标,在一张excel表里
系统 |
地区 |
指标4 |
指标2 |
指标5 |
指标1 |
指标3 |
A |
苏州 |
11 |
3 |
7 |
10 |
13 |
A |
杭州 |
4 |
5 |
3 |
13 |
3 |
A |
广州 |
10 |
10 |
14 |
7 |
14 |
A |
深圳 |
11 |
3 |
13 |
7 |
5 |
A |
南京 |
10 |
7 |
13 |
15 |
8 |
B |
苏州 |
6 |
4 |
14 |
6 |
6 |
B |
杭州 |
14 |
8 |
6 |
11 |
3 |
B |
广州 |
11 |
15 |
3 |
13 |
15 |
B |
深圳 |
10 |
5 |
7 |
3 |
11 |
B |
南京 |
7 |
12 |
8 |
7 |
5 |
C |
苏州 |
5 |
8 |
3 |
7 |
9 |
C |
杭州 |
5 |
6 |
4 |
7 |
7 |
C |
广州 |
4 |
8 |
9 |
10 |
9 |
C |
深圳 |
4 |
6 |
2 |
3 |
10 |
C |
南京 |
10 |
3 |
3 |
6 |
9 |
另外一张表的sheet1数据如下:
系统 |
地区 |
指标1 |
指标2 |
指标3 |
A |
苏州 |
3 |
7 |
5 |
A |
杭州 |
6 |
7 |
7 |
A |
广州 |
5 |
9 |
9 |
A |
深圳 |
2 |
5 |
8 |
A |
南京 |
3 |
8 |
2 |
把源数据中系统A下的指标1,2,3更新到sheet1中,结果如下
系统 |
地区 |
指标1 |
指标2 |
指标3 |
A |
苏州 |
10 |
3 |
13 |
A |
杭州 |
13 |
5 |
3 |
A |
广州 |
7 |
10 |
14 |
A |
深圳 |
7 |
3 |
5 |
A |
南京 |
15 |
7 |
8 |
Sheet2数据如下:
系统 |
地区 |
指标1 |
指标3 |
指标2 |
B |
苏州 |
10 |
9 |
10 |
B |
杭州 |
8 |
8 |
5 |
B |
广州 |
3 |
6 |
5 |
B |
深圳 |
2 |
3 |
8 |
B |
南京 |
4 |
6 |
10 |
把源数据中系统B下的指标1,3,2更新到sheet1中,结果如下
系统 |
地区 |
指标1 |
指标3 |
指标2 |
B |
苏州 |
6 |
6 |
4 |
B |
杭州 |
11 |
3 |
8 |
B |
广州 |
13 |
15 |
15 |
B |
深圳 |
3 |
11 |
5 |
B |
南京 |
7 |
5 |
12 |
Sheet3数据如下:
系统 |
地区 |
指标4 |
指标2 |
指标5 |
C |
苏州 |
11 |
3 |
7 |
C |
杭州 |
4 |
5 |
3 |
C |
广州 |
10 |
10 |
14 |
C |
深圳 |
11 |
3 |
13 |
C |
南京 |
10 |
7 |
13 |
把源数据中系统C下的指标4,2,5更新到sheet3中,结果如下
系统 |
地区 |
指标4 |
指标2 |
指标5 |
C |
苏州 |
5 |
8 |
3 |
C |
杭州 |
5 |
6 |
4 |
C |
广州 |
4 |
8 |
9 |
C |
深圳 |
4 |
6 |
2 |
C |
南京 |
10 |
3 |
3 |
注意:不同的sheet表含有不同的系统,并且不同sheet表格的指标个数和指标顺序有区别。
真实场景:
(1)含有50个系统,存放在50个sheet表格里。每个sheet表里指标个数8-11不等
(2)源数据50个系统,指标个数20左右。
我的方式是在源数据中先筛选系统A,因为地区顺序是一致的,不用管地区,然后复制指标1所在列粘贴,复制指标2所在列粘贴,指标三所在列粘贴。
需要操作三次,并且在不同的表格,比较麻烦。真实情况10个指标,50个系统,这种方法要复制500次。
那么,能不能对sheet表直接匹配源数据中对应的指标列,这样只需要50次
或者通过其他方式(如python)简化操作流程和减少时间
把这个需求进行拆分,先从小的情况慢慢分析,然后增加难度。
简单情况1
三个系统A,B,C在不同sheet的相同位置,A5:E10
源数据的位置在A1:G16
然后再A系统中的C6单元格输入:
=VLOOKUP($B6,源数据!$B$1:$G$6,MATCH(C$5,源数据!$B$1:$G$1,0),0)
解释:第1个逗号前,$用于把B列固定,便于比对地区
第2个逗号前,表示查找的数据范围,要用绝对引用
match用于找到匹配列,第1个参数,查找字段的位置,要固定行;第2个参数,匹配字段的范围;第3个 0 精确匹配
0表示精确匹配
同理在B系统中C6单元格输入:
=VLOOKUP($B6,源数据!$B$7:$G$11,MATCH(C$5,源数据!$B$1:$G$1,0),0)
和上面区别就是查找的数据范围变为了:B7:G11。
同理在C系统中C6单元格输入:
=VLOOKUP($B6,源数据!$B$12:$G$16,MATCH(C$5,源数据!$B$1:$G$1,0),0)
和上面区别就是查找的数据范围变为了:B12:G16。
上面的问题:
(1)复制公式后还需要改公式的参数,不是直接复制,然后拖拽就能完成的
(2)A,B,C系统在不同sheet中的位置需要保持一致
参考:
https://www.cnblogs.com/janicemvidal/p/8608142.html