分享前還是先分享自己的Python學(xué)習(xí)交流群:308754087群內(nèi)不定時(shí)分享干貨承匣,包括2017最新的python企業(yè)案例學(xué)習(xí)資料和零基礎(chǔ)入門教程蓖乘,歡迎初學(xué)和進(jìn)階中的小伙伴入群學(xué)習(xí)交流
前文:
據(jù)媒體報(bào)道,最近幾個(gè)月以來(lái)悄雅,亞馬遜和微軟已經(jīng)第二次聯(lián)手驱敲,而谷歌目前依然還處于觀望狀態(tài)。這是雙方在8月之后的第二次合作宽闲,之前亞馬遜和微軟進(jìn)行過(guò)Alexa和Cortana語(yǔ)音助手彼此交談的互動(dòng)試驗(yàn)众眨。
42歲碩士研究生學(xué)歷握牧,事業(yè)有成的研發(fā)工程師,一家8口人的頂梁柱……很難想象這樣一個(gè)人會(huì)選擇跳樓自盡娩梨。中興通訊下屬深圳中興網(wǎng)信科技有限公司工程師歐某之死沿腰,引發(fā)輿論對(duì)IT界人群的關(guān)注。IT精英頂不住失業(yè)風(fēng)險(xiǎn)狈定?人到中年該怎樣才能“好好活著”颂龙?
繼兩大新聞之后,又一新消息震撼出世 ? ?python或?qū)⑷〈鶹BA
請(qǐng)點(diǎn)擊此處輸入圖片描述
?
據(jù)外媒報(bào)道纽什,微軟正考慮添加 Python 為官方的一種 Excel 腳本語(yǔ)言措嵌,如果獲得批準(zhǔn),Excel 用戶將能夠像目前使用 VBA 腳本一樣芦缰,使用 Python 腳本與 Excel 文檔企巢、數(shù)據(jù)以及一些 Excel 核心函數(shù)進(jìn)行交互。
請(qǐng)點(diǎn)擊此處輸入圖片描述
目前為止让蕾,超過(guò) 3883 人贊同將 Python 集成到 Excel 中浪规,成為 VBA 替代品,甚至像單元格函數(shù) functions (=SUM(A1:A2)) 也可以用 Python 函數(shù) sum(a1, a2) 來(lái)代替
請(qǐng)點(diǎn)擊此處輸入圖片描述
目前微軟官方已經(jīng)作出積極回應(yīng)探孝,通過(guò)發(fā)起投票來(lái)收集更多用戶的反饋信息笋婿,在線調(diào)查用戶想要如何在 Excel 中使用 Python 。
有用戶認(rèn)為顿颅,如果微軟走這條路線缸濒,那么為便于日常使用,微軟也需要在所有其他 Office 應(yīng)用中支持 Python 元镀。
網(wǎng)友評(píng)論:
青山不在:python通用性現(xiàn)在比較多绍填,vba太獨(dú)立了,而且也太老了栖疑,該使用新語(yǔ)言了讨永。
紅茶:這個(gè)消息太及時(shí)了,我還正準(zhǔn)備學(xué)VBA呢
Powerlion:不錯(cuò)遇革,微軟谷歌支持起來(lái)的話py會(huì)僅次于JAVA 和c的
下老爸:非常贊成卿闹,VBS太老了
例:
在本章介紹中,我們將展示下利用ExcelPython去合并收集到的列表萝快,排列他們的數(shù)據(jù)以及刪除任意副本锻霎。這是一個(gè)非常簡(jiǎn)單的python任務(wù),只需要幾行代碼揪漩,而如果用VBA代碼來(lái)實(shí)現(xiàn)同樣功能則需要更多的代碼旋恼。
以下是我們?cè)贓xcel中準(zhǔn)備調(diào)用的python代碼:
請(qǐng)點(diǎn)擊此處輸入圖片描述
任意在本地建立一個(gè)目錄,并保存這個(gè)代碼并命名為Methods.py奄容。我們一步步看看如何從Excel的工作表中如何調(diào)用這個(gè)腳本冰更。打開Excel产徊,填寫一些數(shù)據(jù)以便提供python腳本處理,并保持這個(gè)表格于剛才的python腳本在同一目錄下蜀细。你的工作表應(yīng)該如下:
請(qǐng)點(diǎn)擊此處輸入圖片描述
接下來(lái)舟铜,打開VBA并提交給ExcelPython。打開VBA按Alt + F11然后進(jìn)入工具界面的References···如果你已經(jīng)正確安裝了ExcelPython你可以從對(duì)話框中選擇奠衔。
替換高清大圖
請(qǐng)點(diǎn)擊此處輸入圖片描述
如圖選擇你就可以引用ExcelPython庫(kù)了谆刨,輸入?PyVar(PyEval("1+2")) 在彈窗里(如果沒有彈窗請(qǐng)按 Ctrl + G),你會(huì)直接看到結(jié)果归斤。
替換高清大圖
請(qǐng)點(diǎn)擊此處輸入圖片描述
現(xiàn)在痊夭,我們準(zhǔn)備調(diào)用python腳本,創(chuàng)建一個(gè)新的模塊(Insert | Module)并敲以下VBA代碼:
請(qǐng)點(diǎn)擊此處輸入圖片描述
解析:
請(qǐng)點(diǎn)擊此處輸入圖片描述
這里首先是導(dǎo)入python模塊脏里,也就是從我們預(yù)先建好的Methods.py所在的目錄中導(dǎo)入生兆,并存儲(chǔ)成為VBA的模塊變量。也就是說(shuō)現(xiàn)在VBA函數(shù)擁有了一個(gè)本地的叫methods的變量膝宁,它直接調(diào)用的其實(shí)是python模塊,注意AddPath參數(shù)根吁,這里要填入我們一開始定義python腳本的路徑-這里我們輸入對(duì)應(yīng)路徑以便找到我們的Methods.py员淫。
接下來(lái)我調(diào)用 merge_sort_unique:
請(qǐng)點(diǎn)擊此處輸入圖片描述
ExcelPython 的PyCall模塊選擇一個(gè)待處理列,這個(gè)列會(huì)被PyTuple模塊處理击敌,你也可以通過(guò) PyDict模塊自由選擇任意指定的列介返。這里被處理的結(jié)果會(huì)作為VBA的一個(gè)結(jié)果變量。
這個(gè)結(jié)果變量現(xiàn)在是一個(gè)python的list對(duì)象沃斤,它還不能直接導(dǎo)回到工作表(會(huì)導(dǎo)致一個(gè)typeerror)圣蝎。所以,最后一步衡瓶,我們用PyVar模塊來(lái)對(duì)python的list對(duì)象做編碼轉(zhuǎn)換徘公。
請(qǐng)點(diǎn)擊此處輸入圖片描述
PyVar模塊一般會(huì)將python對(duì)象轉(zhuǎn)換和VBA相同的編碼,這里面哮针,可能使用是將python lsit-of-lsits 轉(zhuǎn)換成2D數(shù)組关面。更多的細(xì)節(jié)請(qǐng)?jiān)贓xcelpython的維基上查詢。
現(xiàn)在我們看看是否成功運(yùn)行十厢!在工作表創(chuàng)建一個(gè)數(shù)組塊(選擇多個(gè)表格等太,輸入公式并按 Ctrl-Shift-Enter)輸入公式=msu(A1:C16)。你會(huì)看到以下結(jié)果:
請(qǐng)點(diǎn)擊此處輸入圖片描述
如果沒有成功蛮放,別擔(dān)心缩抡,ExcelPython非常容易debug,按下面修改VBA代碼
請(qǐng)點(diǎn)擊此處輸入圖片描述
這樣任何錯(cuò)誤都可以被抓取并打印在工作表中包颁,你可以分析哪里出錯(cuò)瞻想。最后說(shuō)明一點(diǎn)压真,這個(gè)功能會(huì)返回一個(gè)0,在列表的開頭,即使這個(gè)0并不存在任何的列當(dāng)中内边,實(shí)際上這是python的一個(gè)空值作為一個(gè)開始寫進(jìn)到工作表的榴都。為什么函數(shù)會(huì)返回一個(gè)空值在被處理的數(shù)據(jù)中呢?
原因在于導(dǎo)入的出來(lái)的幾個(gè)列都是不同長(zhǎng)度的漠其,所以空的表格也會(huì)作為一個(gè)數(shù)據(jù)塊嘴高,會(huì)被當(dāng)做一個(gè)VBA空的值。這個(gè)值也會(huì)被封裝成一個(gè)空值傳給python和屎,所以導(dǎo)入處理的數(shù)據(jù)塊其實(shí)是包含了一個(gè)空值的拴驮,一個(gè)快速解決方法是,修改merge_sort_unique參數(shù)柴信,它可以從返回的值當(dāng)中去掉空值:
請(qǐng)點(diǎn)擊此處輸入圖片描述
所以你要做的就是修改Methods.py套啤,保存并按F9重新計(jì)算表格數(shù)據(jù)——ExcelPython會(huì)自動(dòng)加載python腳本模塊,對(duì)于提升excel的python接口腳本的互動(dòng)性非常有幫助随常。
請(qǐng)點(diǎn)擊此處輸入圖片描述
如有侵權(quán)潜沦,親聯(lián)系小編刪除文章