Vlookup ,根據(jù)關(guān)聯(lián)字段,合并表格,類似join
需求1:
sheet 1:
user_id, order_no
sheet2:
order_no, payment
現(xiàn)需把數(shù)據(jù)合并成一個(gè)表展示,通過order_no關(guān)聯(lián)兩個(gè)sheet
最終效果是:
sheet1:
user_id, order_no, payment
做法:
sheet1的第三列,名字叫支付方式(payment),在這里的空格輸入程序:
=VLOOKUP(I2,Sheet2!$A$1:$B$4000,2,1)
解釋:
I2(待搜索匹配的數(shù)據(jù)): 代表sheet1的order_no
Sheet2!$A$1:$C$4000(在哪個(gè)范圍搜索匹配): 代表整個(gè)sheet2的數(shù)據(jù),注意$A$1:$B$4000這里是絕對(duì)引用,不是相對(duì)引用。
2(匹配后取第幾列的數(shù)據(jù)): 代表sheet2的第二列,即payment列,意味著匹配后,sheet1的payment就顯示這一列的數(shù)據(jù)
1(精確or模糊匹配): 1精確,0模糊
這樣就能合并了
注意的地方
- 我們搜索的是sheet1的order_no, 那么搜索的目標(biāo)范圍,第一列必須就是order_no的數(shù)據(jù),否則匹配不上。這里的含義是,你拿你所搜的東西,到我目標(biāo)范圍的第一列匹配,不是第一列匹配不了。即excel的做法只會(huì)搜索第一列,不會(huì)跟你全列搜索,這樣效率也低。
- 搜索范圍的絕對(duì)應(yīng)用和相對(duì)應(yīng)用,我一開始用相對(duì)引用(直接輸入sheet1:2000),那么后面數(shù)據(jù)執(zhí)行函數(shù)的時(shí)候,會(huì)自動(dòng)變成2:20001, 3:20002。 結(jié)果匹配的數(shù)據(jù)出錯(cuò)了。 用絕對(duì)應(yīng)用,無論哪個(gè)數(shù)據(jù)執(zhí)行,都是針對(duì)整個(gè)搜索訪問,不會(huì)移動(dòng),這樣沒有出錯(cuò)。$A$1:$B$4000 這種就是絕對(duì)引用
COUNTIFS 應(yīng)用,聚合統(tǒng)計(jì)count\sum,類似group by
需求
sheet1
user_id1, order_1, status=1
user_id1, order_2, status=0
user_id1, order_3, status=1
user_id2, order_10, status=0
user_id2, order_11, status=1
需要在sheet2表統(tǒng)計(jì)好用戶分組數(shù)據(jù),最后展示為:
user_id1, 訂單總數(shù), status=1的總數(shù)
user_id2, 訂單總數(shù), status=1的總數(shù)
思路
我一開始想使用vlookup,來達(dá)成這個(gè)目的,但是搞了很久,都沒搞成,vlookup每次只會(huì)搜索一次,然后不會(huì)累加
這個(gè)思路我覺得還是得梳理一下。
做法:
累計(jì)訂單總數(shù)=COUNTIF(Sheet1!A:A,A2)
第一個(gè)參數(shù):范圍
第二個(gè)參數(shù):條件
這里的含義是:A2這個(gè)值在sheet1A列里面如果匹配了,則count累加一下行數(shù)
計(jì)算status=1的總數(shù) =COUNTIFS(Sheet1!A:A,A2,Sheet1!F:F,"=1")
COUNTIFS(范圍1,條件1, 范圍2,條件2)
這里的含義是:
第一個(gè)條件:A2這個(gè)值在sheet1A列里面匹配
第二個(gè)條件:F列里面值=1
符合這兩個(gè)條件,才會(huì)COUNT計(jì)算行數(shù)