連春來



摘要: Excel行數據批量輸出為Word樣式文檔步驟;VBA宏代碼的簡單應用
關鍵詞:創建表;創建宏代碼 ;自動復制表;程序創建引用
中圖分類號: TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2020)36-0192-02
1 提出問題
Excel表是行列結構的,優點是方便篩選、排序、計算、分析、統計功能,但列數據比較多時,就不夠直觀,打印、查看都不方便,如表1(只截取部分表):
Excel表還可以有更直觀的呈現方式,每行數據輸出為Word樣式文檔,如表2(只截取部分表):
上述行列表、直觀表各有優點,如何在行列表中操作數據,后輸出為直觀表?比如某表有400行的調查數據,全部輸出為400張Word樣式文檔,如何來提高工作效率?
2 分析問題
批量輸出的可行性分析:
1)兩種表之間可通過單元格引用,形成一一對應關系;
2)輸出表通過復制,能生成多表,可借助VBA宏代碼實現快速自動復制;
3)輸出表的每一單元格的引用,可以通過VBA宏代碼的循環替換生成一一對應行列表單元格。
4)通過對輸出表進行選擇性粘貼,解除單元格的引用,生成不帶公式的表。
3 實例應用
3.1 第一步,R1C1引用樣式設置(Excel2003為例)
在Excel主界面,默認使用“A1”格式為單元格引用,現轉換為“R1C1”引用樣式,目的是為單元格行列數字替換做準備。設置步驟:Excel菜單工具→選項→常規,在“設置”中單擊“R1C1引用樣式(C)”前面方框,最后單擊確定,單元格數字引用樣式完成設置,如“R2C5”, “R10C15”。
設置前,列表示為A,B,C,D,E,F…,列是用字母表示,如表3。
設置后,列表示為1,2,3,4,5,6…,列是用數字表示,如表4。
3.2 第二步,創建設計表和數據表
1)創建設計表,表名為“設計表”,樣式如表5。
2)創建數據表,表名“sheet5”,添加如表6內容(為盡可能多顯示,數值用數字代替)。
3.3 第三步,k值替換
用“ #Sheet5!R?yC?z&"" ”替換設計表3.2.1中的k值,其“R”為行,“?y”表示行數, C為列,“?z”表示列數(如Sheet5!R1C2,表示引用的是表“Sheet5”的1行2列的數據),&""表示連接空格(目的是數據顯示為字符格式),替換后如表7:
3.4 第四步,創建VBA宏代碼模塊--用于復制表
創建VBA宏代碼模塊,用于復制表(模塊名稱為“表添加()”),VBA宏代碼如圖1。
動態參數說明:A1:R36? 為復制區域(不同的表,區域會不同,是動態的);
運行此模塊后,復制成5張一樣的表。
3.5 第五步,創建VBA宏代碼模塊--用于單元格行列引用參數替換
創建用于單元格行列引用參數替換的VBA宏代碼模塊(名稱為“表行列增加()”),如圖2。
動態參數說明:
運行此模塊后,設計表第一張表替換后如表8, 第二張表替換后如表9。
設計表第一張表的單元格,對應sheet5表第二行的相應單元格;
設計表第二張表的單元格,對應sheet5表第三行的相應單元格;
設計表第三張表的單元格,對應sheet5表第四行的相應單元格;
依次類推,形成設計表的各單張表與sheet5表的行有一一對應關系。
3.6 第六步,設計表生成引用公式(如“#sheet5!R2c2&""”生成引用“=Sheet5!R2C2”)
由Excel菜單“編輯” →“查找替換”, 把“#”替換為“=”,生成引用公式,如設計表“R3C4”單元格的值引用了表“Sheet5”的“R2C2” 單元格的值,表2對應表1。
至此,Excel行列結構數據表“sheet5”批量輸出為Word樣式文檔“設計表”,轉換完成。
4 注意事項及相關問題
1)單元格不能轉換生成公式時,單元格設置成常規格式;
2)設計表要脫離公式引用,可全選表格,在當前表右擊,選擇性粘貼;
3)直觀表轉行列表,簡單多了,反引用二行,向下拉就成了。
【通聯編輯:李雅琪】