活用Excel,成為真正的“全戰”工程師

微軟技術棧發表於2022-01-25

因為工作的關係,大部分程式設計師都比較少接觸Excel,一旦遇到和Excel相關的問題可能第一反應是用code解決。其實,如果資料已經在Excel裡面,是可以很容易用Excel本身的功能解決的。另外,如果熟悉Excel的公式結構,有些場景下還可以藉助Excel來批量建立程式程式碼。本文用幾個案例來向大家展示這方面的技巧。

Excel 這個電子表格軟體的主力使用者群體是財務、HR 以及各部門需要處理和分析資料的資訊工作者。因為工作的關係,我和表哥表姐表弟表妹打的交道很多。於是我經常聽到他們的吐槽:

“我們公司的IT連VLOOKUP都不會”
“我就想把二維錶轉一維表,我BF居然說要等他有空敲程式碼才行”

在他們的心裡,專業CS出身的程式設計師們應該是通吃所有軟體問題的,包括且不限於Excel。

但這明顯屬於誤解,因為大部分程式設計師平時工作中與 Excel 很少有交集,不會 VLOOKUP而且凡事都想擼程式碼解決是正常現象。程式設計師是資訊時代的王者,所謂沒有什麼事情是一行程式碼搞不定的,如果不行,那就再寫幾行。

我也有很多程式猿和攻城獅朋友,偶爾會幫他們解決 Excel 方面的小問題。我一直有一個觀點,任何人這輩子都一定會遇上 Excel,提前稍微瞭解一下,點亮這棵技能樹,是很有價值的。況且,對於有深厚功底的程式設計師來說,學 Excel 的速度肯定是普通人的10倍。下面,我就用幾個例子來分享一下,哪怕是程式設計師也可以藉助 Excel 提高拔劍的速度!

拼接 SQL 條件語句

比如業務部門冷不丁發給你一張表格,讓你在後臺把這些資料處理一下。

圖片

這是個臨時任務,你需要寫一條SQL語句,無論是 UPDATE 還是 DELETE,都需要條件語句,這幾十個資料怎麼快速寫成條件語句呢?

先說重點:如果資料已經在 Excel 裡面了,你要堅信 Excel 就是最有辦法最省力的工具。

我們可以在B2寫入公式:

=B1&","&"'"&A2&"'"
雙擊B2右下角的填充柄,自動複製公式到整列。

圖片

最後直接複製B25單元格,貼上到你的SQL編輯器裡面,稍微編輯一下,就大功告成啦。
圖片

‘&’在 Excel 公式裡用於拼接字串、數值或單元格。在本例的拼接過程中,使用的是單引號。如果在某些程式語言中需要拼接出雙引號的效果,可以用下面的公式:

=B1&","&""""&A2&""""

SQL 連續處理多張資料表

有些資料庫因為使用了分表技術,同一類資料按既定規則儲存在了某一張資料表中,如果偶爾需要按條件處理一個資料,就必須遍歷所有的表。

比如,現在有device_list_0到device_list_9 都用於儲存裝置相關資訊,如果臨時要刪除device_no為78262170fa33 的記錄,事先不知道這條記錄具體在哪張表,一個簡單的方法就是直接每張表都刪除一次。此時,可以藉助 Excel 批量構造 SQL 語句。

開啟Excel,在A1單元格寫入公式:

= "'device_list_"&ROW()-1&"'"

在B1單元格寫入公式:

="delete from "&A1&" where 'device_no' = '78262170fa33';"
這樣,第一條語句就完成了。

選中A1:B1,往下複製公式到 A10:B10,就得到了全部所需的 SQL 語句!

利用這樣的拼接思路,可以方便的完成各種程式語言裡面的“重複程式碼”,大家可以根據實際情況靈活處理。

處理重複記錄

在開發和運維過程中,不可避免的要面對重複資料,雖然始作俑者不是自己,但需要加班處理的多半是自己。

比如業務部門提供的資料表中,device_no 可能有重複的,這些重複還不能簡單的處理掉,得先標記出來再人肉核對。

重複一遍重要的話:如果資料已經在 Excel 裡面了,你要堅信 Excel 就是最有辦法最省力的工具。

面對這種情況,只需要先選中資料表的任意單元格,然後單擊【開始】選項卡下面的【條件格式】→【突出顯示單元格規則】→【重複值】就能解決。

嗯,然後所有的重複的值就被標記出來了。

現在右擊B2,也就是第一個被標記的單元格,在彈出的快捷選單中單擊【篩選】→【按所選單元格的顏色篩選】。

這樣就篩選出了所有的重複記錄。

此外,Excel還提供了“刪除重複項”功能可以直接刪除重複記錄,也可以使用 COUNTIF 函式排除第1次之後的重複項或者最後一次之前的重複項,都非常方便。

分析與重組資料

在Excel中,使用“分列”功能或者文字函式可以將字串的內容分拆到多個單元格中。從Excel 2013開始,更智慧的“快速填充”功能出現了。

以下表為例。

如果希望從B、C列中將主型號和釋出年份分拆到D、E列中,可以這麼操作:

在D2單元格中輸入FSA,選中D3單元格,按<Ctrl+E>組合鍵;

在E3單元格中輸入2016,選中E3單元格,按<Ctrl+E>組合鍵;

需要的資訊瞬間就拆分出來了。

假設新型號的命名規則是城市編碼-主型號-年,可以在F2單元格中輸入025-FSA-2016,然後選中F3單元格,按<Ctrl+E>組合鍵。

注意,剛才的分拆操作對於計算新型號不是必須的。

總結

這篇文章主要介紹瞭如何藉助 Excel 快速處理一些資料問題,幫助程式設計師提升Excel 資料能力。用程式設計師的話來說,能用現成的輪子就用現成的,沒用必要重新造輪子。既然資料在 Excel 裡面,而 Excel 已經有了無數的輪子,我們為什麼不用呢?

每個人遇到問題都會優先使用自己最熟悉的工具來處理,因為這樣風險最低,效率最高。但實際上每種工具都有自己的優勢和適用場景,所以我們不要有侷限性,甚至有“鄙視”情節,多瞭解一些工具可以提升我們的面對各種問題的綜合應對能力。

以上內容基於我個人的經驗,對大家算是拋磚引玉吧。我相信也有很多程式設計師的 Excel 水平比我厲害的多,希望你們也來分享一些祕技!

微軟最有價值專家(MVP)

微軟最有價值專家是微軟公司授予第三方技術專業人士的一個全球獎項。28年來,世界各地的技術社群領導者,因其線上上和線下的技術社群中分享專業知識和經驗而獲得此獎項。

MVP是經過嚴格挑選的專家團隊,他們代表著技術最精湛且最具智慧的人,是對社群投入極大的熱情並樂於助人的專家。MVP致力於通過演講、論壇問答、建立網站、撰寫部落格、分享視訊、開源專案、組織會議等方式來幫助他人,並最大程度地幫助微軟技術社群使用者使用Microsoft技術。

更多詳情請登入官方網站,微軟MVP,期待你加入

相關文章