想必大家小時候學習漢字的時候都有學習過筆畫筆順吧,今天小編想和大家分享如何巧妙的利用筆畫排序來實現計算漢字筆畫數。小編也在網上看了一些別人的實現,發現要不就是不夠準確,要不就是公式太複雜,因此小編想分享一個簡單的實現方式。
本篇文章更多的是為了學習:
筆畫排序;宏的錄製;邏輯思維鍛鍊。1、筆畫排序
首先我們要了解一個基本功能:筆畫排序。
在「數據」選項卡下「排序和篩選」命令組中「排序」功能裡,可以設置「選項」選擇「筆劃排序」。
我們看一下動態操作效果:
2、計算筆畫原理梳理
有了這個筆畫排序基礎功能以後,我們來梳理一下邏輯。
首先Excel內部是實現了漢字筆畫數的計算,不然它就無法實現筆畫排序這個功能,但是Excel沒有直接提供相應的方法。
那麼如果我們把所有漢字都放入到Excel中,然後進行升序排序,那麼從上到下的筆畫應該是1,2,3……。
雖然所有漢字聽起來很多,但是漢字筆畫是有上限的啊,加上很多漢字筆畫是相同的,那麼我們把所有相同筆畫數漢字都只保留第一個,那麼留下的漢字理論上的個數就是筆畫最多的那個漢字的筆畫數。
另外小編這裡知道的漢字筆畫最多的是「」,這個字由四個繁體「龍」字組成,讀zhé,一共64畫。我們也知道筆畫越多,其實字是越少的,可能有些大筆畫數的漢字都不存在。
那麼我們最終每個筆畫數隻留下了一個漢字的列表,然後我們把需要計算的漢字放到這個列表裡再使用筆畫排序重新排序,那麼就可以根據要計算漢字前後的漢字筆畫得出結果。為什麼呢?
這是因為我們留下的漢字都是同筆畫數中排在第一個的,因此要計算的漢字是排在它同筆畫數後面並且在它後一個筆畫數前面,因此計算漢字前面一個字的筆畫就是我們要的結果。比如保留的列表是「一、二、三」,我們把「乙」加入以後重新排序,會得到「一、乙、二、三」,因此「乙」是一畫,同理「十」加入後重新排序是「一、二、十、三」,因此是兩畫。我們可以看看動態演示:
3、漢字素材準備
首先小編從網上找儘量多的漢字共70205個(需要原文檔的請私信),然後使用筆畫排序。
最後刪除重複筆畫數後留下唯一筆畫數漢字48個,如下列表,可能有些字在某些機器上無法正常顯示(需要原文檔的請私信)。
4、錄製宏解決重複勞動
到這裡計算漢字筆畫的基本原理已經搞清楚了,並且素材也都準備好了,但是我們還需要美化一下,畢竟不能計算一個漢字,就要重新排序一下吧。
當要重複進行某個操作的時候,你應該想到「宏」,我們可以通過錄製宏來完成這一重複操作。
如上圖,我們在紅框E4單元格中輸入漢字,然後點擊計算就可以得到結果並顯示在藍框G4單元格中。
首先在A列數據最下方A49單元格輸入公式「=$E$4」,在B49單元格輸入一100(大於B48中的64即可),然後在G4單元格中輸入公式「=INDEX(B:B,MATCH(100,B:B,0)-1)」(這裡之所以用100,而不用E4中的漢字查詢,是因為輸入的漢字和列表中的漢字可能相同,這樣就會導致計算公式複雜度增加,選用B49中100,因為筆畫列沒有重複的問題,因此公式才能簡潔),即通過MATCH函數查詢漢字所在行,然後INDEX函數通過行號查詢出值。
點擊「開發工具」選項卡「代碼」命令組下的「錄製宏」。
然後選中A1:B49單元格區域,選擇排序,設置選項以筆劃排序,添加列A、列B分別以升序排序。這裡選擇AB兩列同時排序是因為在非第一次計算時,輸入的漢字和列表中的漢字重複時,輸入的漢字可能在列表相同漢字的上方,AB兩列同時排序為了避免這種情況,保證公式正確性簡潔性。
然後點擊「開發工具」選項卡「代碼」命令組下的「停止錄製」。
5、指定宏實現計算功能
然後選中計算圖形右擊滑鼠(計算圖形是通過插入矩形形狀然後設置背景添加文字),選擇指定宏。
在指定宏對話框中,選中剛才錄製的宏即可。
整個功能到此就完成了,下面我們看看動態效果: