繼微軟亞馬遜谋竖,中興事件之后,又一重量級(jí)新聞python取代VBA出現(xiàn)

分享前還是先分享自己的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)系小編刪除文章

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市绪氛,隨后出現(xiàn)的幾起案子唆鸡,更是在濱河造成了極大的恐慌,老刑警劉巖枣察,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件争占,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡序目,警方通過(guò)查閱死者的電腦和手機(jī)臂痕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)猿涨,“玉大人握童,你說(shuō)我怎么就攤上這事∨炎” “怎么了舆瘪?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)红伦。 經(jīng)常有香客問(wèn)我英古,道長(zhǎng),這世上最難降的妖魔是什么昙读? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任召调,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘唠叛。我一直安慰自己只嚣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布艺沼。 她就那樣靜靜地躺著册舞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪障般。 梳的紋絲不亂的頭發(fā)上调鲸,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音挽荡,去河邊找鬼藐石。 笑死,一個(gè)胖子當(dāng)著我的面吹牛定拟,可吹牛的內(nèi)容都是我干的于微。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼青自,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼株依!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起延窜,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勺三,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后需曾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祈远,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年呆万,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片车份。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谋减,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扫沼,到底是詐尸還是另有隱情出爹,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布缎除,位于F島的核電站严就,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏器罐。R本人自食惡果不足惜梢为,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铸董,春花似錦祟印、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至悲幅,卻和暖如春套鹅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夺艰。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工芋哭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人郁副。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓减牺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親存谎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拔疚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容