
如何快速把層級分明的word文檔轉換成橫向從屬結構的excel表格
一、問題描述
文檔如下圖所示。文檔一共三個層次,大綱級別分別是1、2、3級,左則是其文檔結構圖,可以看出文檔層級分明。

最終要將文檔轉換成如下橫向從屬結構的表格。一個層次的內容占一列,最末一層次,每一段占一個單元格,各層次按從屬關系,層層對應,除了最末一層,每一層都按下一層的行數進行單元格合并。

二、解決辦法
第一步 為各層次內容加上制表符
第一層次內容不加制表符,第二層次內容加上一個制表符,第三層次內容加上兩個制表符,以此類推。此步可以使用查找與替換快速實現。操作如下圖所示。
示例中第一層次內容樣式為標題1,第二層次內容樣式為標題2,第三層次內容樣式為標題3。
知乎視頻?www.zhihu.com第二步 文本轉表格
全選文本,使用word自帶的文本轉表格功能,以制表符為分隔位置,將文本轉換為如下表格。

第三步 把表格粘貼到excel中,充填除最末列外的空白單元格
復制word表格后,以匹配目標格式的方式粘貼到excel中。示例中最末列是第三列,除了了第三列外,第一、第二列的空白單元格需要根據其上一單元格的內容進行充填。快速充填這些不相連的空白單元格需要用定位功能和公式,操作如下圖所示。
知乎視頻?www.zhihu.com第四步 利用條件篩選去掉多余行
將上述表格內容全選,復制,在另一個sheet中粘貼為值,去掉公式。利用“條件格式”--“突出顯示單元格規則”—“重復值”,把第一和第二列重復值標記出來,第一列是淺紅色充填單元格,第二列字體設置為紅色。篩選,第三列的篩選條件為空值,第二的篩選條件為紅色字體,第三列條件為淺紅色充填。篩選出來的行就是多余的行,刪除這些行。
刪除多余行后,檢查一下除最末列外的內容,是否存在唯一值(未標記顏色的)。如果存在,需要刪除該值所在行內標記了重復值的單元格的內容。
把第二列重復值標記出來,是為了應對第二列有內容(即有第二級內容),而第三列無內容(即第三級內容為空)的情況。因為這種情況下,第二列存在唯一值,不會被重復值標記出來。
把第一列重復值標記出來也是類似的原因。如果第一列不存在唯一值,那么“按顏色篩選”選項為灰色不可用。
操作如下圖所示。
知乎視頻?www.zhihu.com第五步 合并重復單元格
利用“分類匯總”、定位空值、格式刷等功能快速合并重復單元格。選中一列數據,如第二列,通過“分類匯總”,生成一個輔助列,匯總結果顯示在數據下方,定位該列的空值,然后執行合并操作。刪除匯總結果,選中輔助列中合并的單元格,單擊格式刷,刷一下數據列完成合并。最后刪除輔助列。同樣的方法合并其他列重復單元格。
操作如下圖所示。
知乎視頻?www.zhihu.com至此完成word文檔內容向excel表格的快速轉化。更多層次的文檔,轉換的方法是類似的。
20200714更新
編寫VBA代碼,一鍵轉換的方法,請看
阿德:VBA實踐+把大綱級別分明的word文檔轉換成橫向從屬結構excel表格?zhuanlan.zhihu.com