Excel Power Query — 學習筆記(03)
題記:
上篇文章結尾處我留了一道作業題,看似有點兒難,但是基本上可以通過純粹的操作來完成。對於這樣的問題,我們應當心中有個基本的解決思路:
1、我需要什麼?(ASCII碼對照表,有十六進位的那種比較好)
2、我會什麼?(PQ的一些基本操作)
3、1&2有哪些組合?(只需要在腦海過一遍即可)
4、3裡面的組合能夠解決需求嗎?
5、定向搜索解決方案或者求助於專家。
題目:
需求:將原文按照ASCII編碼逐個字元進行轉換。
要求:結果以連續的十六進位編碼的形式用TXT文本格式進行存儲,並且能夠還原成原文。
題目的重要字眼我已經加粗,接下來我們按照題記的思路順序來看一下這道題,為了描述方便,講解使用的簡化版表格:
1.我需要什麼?——兩張表
去網路上找一張合適的ASCII碼錶,百度一下就能夠搜索到大量的表:
ASCII碼對照表當然為了後面視覺上的方便,複製到Excel裡面時稍微改了改列的順序;
再找到《我有一個夢想》的英語原文
我有一個夢想(馬丁·路德·金演講稿)_百度百科
複製文章到Excel就成了:
2.我會什麼?
前面筆記講了:合併查詢/追加查詢/提取/添加列/逆透視/轉置/填充/拆分列/分組依據……
3.將自己會的技能和物料組合一下?
這是一個很不錯的方法(窮舉),但是如果你使用地足夠熟練,也可以這樣想:
1)逐個字元意味著我要將文章的句子拆分成一個一個的字元;
2)而所謂轉換其實就是vlookup查詢一下,也就是PQ裡面的合併查詢(左外);
3)保存到TXT中的字元串是一個連續長串字元串,而原文是有段落的,因此能夠還原其實就是指的段落會被標識出來。
準備工作已經完成!接下來讓我們來看看如何一步一步地解決這道題:
拆分之前我們要考慮一下,我們學的合併查詢一般是單列對應單列,因此如果一個單元格裡面的句子被拆分列後,會生成很多列,因此在拆分前要將句子變成一行;
顯然上圖是無法進行下一步合併查詢的,我們回到最初的步驟,一列變一行怎麼操作?
很顯然是使用轉置,但是在轉置前,我們需要注意轉置後再拆分列並不是無損操作!它丟失了一個重要的信息——段落!
因此我們要找一個合適的字元作為段落標記(類似於轉義字元的
),大概掃了一眼全文,「%」沒有出現過,可以試著用百分號標記一下段落(添加列即可),以便於還原操作:
我們發現拆分列無法一次性拆分這麼多列,是不是特別想合併起來?
嘿嘿,PQ恰好就有這麼一個功能——「合併列」
再試試拆分列,按照1個字元數拆分:
考慮到合併查詢是列與列的合併,因此拆分的結果還要進行一次轉置:
這個時候已經可以進行ASCII碼轉換了——合併查詢:
這個時候是不是發現了一件很「詭異」的事情?展開列的時候竟然自動排序了!
還記得前面筆記講解索引的妙用嗎?這裡就立刻派上用場了!
接下來的步驟就特別簡單了:刪除不要的列,轉置,合併列,上載,複製,粘貼,保存。
最後我們來看看實際操作《我有一個夢想》後的轉碼結果吧:
如何還原可以留給讀者自己做練習,這裡不再贅述。
下篇筆記:《Hello,world!》
推薦閱讀:
TAG:MicrosoftExcel | PowerQuery | 科技 |