小伙伴們,早上好!新的一天又開始了,學習的腳步不能停。 今天向大家分享二維表格轉一維表的三種方法,分別用到函數(shù)、數(shù)據(jù)透視表和VBA代碼。三種方法各有利弊,表親可以自行選擇。 如下圖,A1:E5是數(shù)據(jù)源,A7:C22是最終要實現(xiàn)的結果樣式:
函數(shù)公式法 A7單元格輸入 B7單元格輸入 C7單元格輸入 公式向下復制,完成。 OFFSET函數(shù)通過調整行、列偏移量,改變起始單元格地址,返回現(xiàn)有結果。 以上均以A1為起始單元格。A列的列偏移量始終為0,行偏移量為1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4的數(shù)列,以取整函數(shù)INT和ROW函數(shù)嵌套生成。 B列的行偏移量始終為0,列偏移量為1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4的數(shù)列,以求余函數(shù)MOD和ROW函數(shù)嵌套生成。 C列行列偏移量為A、B兩列綜合。 透視表法 依次按下Alt、D、P,進入多表透視向導。 選擇【多重合并計算數(shù)據(jù)區(qū)域】、創(chuàng)建【數(shù)據(jù)透視表】 創(chuàng)建單頁字段。 選擇數(shù)據(jù)源所在區(qū)域并添加 將生成的數(shù)據(jù)透視表字段設置如下: 報表布局調整為【以表格形式顯示】、【重復所有項目標簽】 取消分類匯總行和總計 在數(shù)據(jù)透視表選項中,去掉勾選顯示展開/折疊按鈕
VBA代碼法 按Alt+F11鍵,進入VBE編輯窗口,輸入如下代碼: Sub test() Dim arr, i%, j%, n% '聲明整形變量i,j,n和arr arr = Range('a1:e5') '將二維表區(qū)域裝入數(shù)組arr中 n = 1 '給i賦初始值1 For i = 2 To UBound(arr) '雙重循環(huán)嵌套,先行后列,循環(huán)終值各為二維表行列數(shù) For j = 2 To UBound(arr, 2) Cells(n, 7) = arr(i, 1) '將數(shù)組arr中i行1列數(shù)值(即車間信息)寫入G列 Cells(n, 8) = arr(1, j) '將數(shù)組arr中1行j列數(shù)值(即部門信息)寫入H列 Cells(n, 9) = arr(i, j) '將數(shù)組arr中i行j列數(shù)值寫入I列 n = n + 1 '每一次循環(huán)即對n加1,用以改變待寫入單元格行數(shù) Next '結束列循環(huán) Next '結束行循環(huán) End Sub 按F5運行該段代碼,查看結果:
有其他的奇思妙想也可以在下方留言哦,我們下次再見! |
|