VLOOKUP函數(shù)大家應(yīng)該都很熟悉吧,它可以幫我們根據(jù)指定的條件快速查找匹配出相應(yīng)的結(jié)果,通常被用于核對(duì)、匹配多個(gè)表格之間的數(shù)據(jù)。與數(shù)據(jù)透視表,并稱(chēng)為數(shù)據(jù)er最常用的兩大Excel功能。

那我們今天就聊聊,如何Python寫(xiě)Excel中的“Vlookup”函數(shù)?
Excel
如圖所示,在“測(cè)試工資數(shù)據(jù).xlsx”表格文件中有兩個(gè)sheet,其中sheet1是我們的數(shù)據(jù)源區(qū)域,而sheet2存儲(chǔ)的是待查找的員工姓名和工資。

在sheet2中,一列是員工姓名,一列是他們的對(duì)應(yīng)工資。

vlookup函數(shù)就是在表格或數(shù)值數(shù)組的首列查找指定的數(shù)值,并由此返回表格或數(shù)組當(dāng)前行中指定列處的數(shù)值。語(yǔ)法格式如下所示:
VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])
一般是匹配條件容易記混,如果為FALSE或0,則返回精確匹配,如果找不到,則返回錯(cuò)誤值 #N/A。如果 range_lookup 為T(mén)RUE或1,函數(shù) VLOOKUP 將查找近似匹配值。
openpyxl
在Python中利用openpyxl庫(kù),就可以完成公式的填充。因此在使用openpyxl之前,需要安裝好這個(gè)庫(kù)。
pipinstallopenpyxl
在openpyxl中,讀取已有的Excel文件,使用到的是load_workbook類(lèi),因此需要提前導(dǎo)入這個(gè)類(lèi)。接著,實(shí)例化load_workbook("測(cè)試工資數(shù)據(jù).xlsx")對(duì)象,得到一個(gè)工作簿對(duì)象。
然后,使用workbook["Sheet2"]激活該工作簿中的Sheet2表,表示我們要針對(duì)這個(gè)表進(jìn)行操作。完成上述操作后,下面就可以進(jìn)行vlookup公式的填寫(xiě)了。
fromopenpyxlimportload_workbook
workbook=load_workbook("測(cè)試工資數(shù)據(jù).xlsx")
sheet=workbook["Sheet2"]
sheet["B1"]="基本工資(Python)"
foriinrange(2,sheet.max_row+1):
sheet[f"B{i}"]=f'=VLOOKUP(A{i},Sheet1!A:B,2,FALSE)'
workbook.save(filename="vlookup.xlsx")
首先,我們利用sheet["B1"] = "基本工資(Python)"修改B1單元格位置的表頭。然后通過(guò)for循環(huán)語(yǔ)句,循環(huán)第2行到最后一行,針對(duì)每一個(gè)B列單元格,我們都寫(xiě)入上述vlookup公式。
最后記得保存一下即可。
不過(guò)需要注意,Python操作Excel的優(yōu)勢(shì)在于處理大數(shù)據(jù)、或者重復(fù)性工作。在本次案例中,使用openpyxl庫(kù)向Excel中寫(xiě)入Vlookup函數(shù)多少有點(diǎn)大材小用了。
經(jīng)過(guò)openpyxl一番操作,如同莊周帶凈化。
Pandas
在這數(shù)據(jù)爆炸的時(shí)代,我們無(wú)時(shí)無(wú)刻不在和數(shù)據(jù)打交道。面對(duì)雜亂無(wú)章的數(shù)據(jù)Pandas 模塊應(yīng)運(yùn)而生了,它提供了數(shù)據(jù)導(dǎo)入、數(shù)據(jù)清洗、數(shù)據(jù)處理、數(shù)據(jù)導(dǎo)出等一套流程方法,可以很方便地幫助我們自動(dòng)整理數(shù)據(jù)[2]。
那么Excel中的這種常用函數(shù),Pandas模塊自然也是可以輕松搞定了。
在 Pandas 模塊中,調(diào)用merge()方法,可以幫助我們實(shí)現(xiàn)數(shù)據(jù)連接。
在交互式環(huán)境中輸入如下命令:
importpandasaspd
path="測(cè)試工資數(shù)據(jù).xlsx"
df_1=pd.read_excel(path,sheet_name='Sheet1')
df_2=pd.read_excel(path,sheet_name='Sheet2')
pd.merge(df_2["姓名"],df_1[["姓名","基本工資"]],how="left",on="姓名")
這樣我們就用Python(openpyxl + Pandas)實(shí)現(xiàn)了Excel中的“Vlookup”函數(shù)。審核編輯 :李倩
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67513 -
python
+關(guān)注
關(guān)注
57文章
4876瀏覽量
90032
原文標(biāo)題:Python 也可以實(shí)現(xiàn) Excel 中的 “Vlookup” 函數(shù)?
文章出處:【微信號(hào):AI科技大本營(yíng),微信公眾號(hào):AI科技大本營(yíng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式開(kāi)發(fā)常用函數(shù)速查表
如何在Zephyr RTOS中實(shí)現(xiàn)延時(shí)和計(jì)時(shí)函數(shù)
勤哲Excel服務(wù)器:移動(dòng)辦公的革新利器,顯著提升企業(yè)協(xié)作效率
使用系統(tǒng)定時(shí)器SysTick來(lái)實(shí)現(xiàn)精確延時(shí)微秒和毫秒函數(shù)
printf函數(shù)在hbird SDK中的應(yīng)用
計(jì)算程序執(zhí)行指令數(shù)的函數(shù)實(shí)現(xiàn)
使用函數(shù)塊實(shí)現(xiàn)三相電機(jī)正反轉(zhuǎn)控制
GCC編譯器,怎么才能實(shí)現(xiàn)c文件中未被調(diào)用的函數(shù),不會(huì)被編譯呢?
EXCEL導(dǎo)入—設(shè)計(jì)與思考
樹(shù)莓派用戶(hù)必備的五大微軟Excel替代軟件!
如何導(dǎo)出Excel文件 -- excel_hm介紹 ##三方SDK##
深入理解C語(yǔ)言:函數(shù)—編程中的“積木塊”藝術(shù)
函數(shù)指針的六個(gè)常見(jiàn)應(yīng)用場(chǎng)景
怎么可以實(shí)現(xiàn)Excel中的“Vlookup”函數(shù)?
評(píng)論