站長資訊網
最全最豐富的資訊網站

excel橫向變縱向 Excel中數據從橫向排列到縱向排列的復雜轉換的幾種方法

excel橫向變縱向 Excel中數據從橫向排列到縱向排列的復雜轉換的幾種方法,我們在工作中會遇到很多文章,像excel橫向變縱向這類問題應該大家也都遇到過吧,今天這篇excel橫向變縱向 Excel中數據從橫向排列到縱向排列的復雜轉換的幾種方法的文章,專門為你解答了這個問題,相信你看完后一定會收獲很多!

在Excel中將橫向排列的數據轉換為縱向排列,在上文中,我們講解了通常用的方法:Excel中數據從橫向排列到縱向排列的轉換的方法,實際上那是通過選擇性粘貼的轉置功能實現的簡單將橫向排列的數據轉換為縱向排列,但很多情況下無法使用“轉置”的功能,例如下圖A1:G17區域為某網店部分商品的庫存數量,“商品尺寸”是橫向排列的,現在需要將這些數據按縱向排列,即將“商品尺寸”及其對應的“貨號”、“數量”排列到三列中,如圖J至L列所示。

excel橫向變縱向 Excel中數據從橫向排列到縱向排列的復雜轉換的幾種方法

本文介紹用數據透視、數組公式和VBA等三種方法來實現這種橫向排列的數據轉換為縱向排列,以在Excel 2010操作為例,范例文件下載:百度網盤

方法一:用數據透視表

1、利用原始數據建立數據透視表。

按組合鍵“Alt+D”,再按“P”鍵,打開“數據透視表和數據透視圖向導”對話框,選擇“多重合并計算數據區域”,單擊“下一步”。

excel橫向變縱向 Excel中數據從橫向排列到縱向排列的復雜轉換的幾種方法

在彈出的對話框中再次單擊“下一步”,彈出““數據透視表和數據透視圖向導–步驟2b”,選擇工作表中的A1:G17區域,單擊“添加”按鈕。

excel橫向變縱向 Excel中數據從橫向排列到縱向排列的復雜轉換的幾種方法

單擊“完成”按鈕,Excel會在新工作表中建立數據透視表。

2、通過數據透視表獲取明細數據。

右擊數據透視表行總計和列總計交叉的單元格,本例為H21,在彈出的快捷菜單中選擇“顯示詳細信息”(也可雙擊該單元格右下角的填充柄)。

excel橫向變縱向 Excel中數據從橫向排列到縱向排列的復雜轉換的幾種方法

Excel會自動在新工作表中顯示該數據透視表數據源的明細數據,如圖所示。

excel橫向變縱向 Excel中數據從橫向排列到縱向排列的復雜轉換的幾種方法

3、篩選C列中的非空數據,將A至C列數據復制到所需位置即可。

方法二:用數組公式

假如將轉換后的數據放在J至L列,在J2單元格輸入數組公式:

=OFFSET(A$1,SMALL(IF(B$2:G$17="",4^7,ROW(B$1:G$16)),ROW(A1)),)&""

公式輸入完畢按Ctrl+Shift+Enter結束,下同。然后拖動填充柄向下填充公式,直到公式返回空為止。

在K2輸入數組公式:

=OFFSET(A$1,,SMALL(IF(OFFSET(B$1,MATCH(J2,A$2:A$17,),,,6)<>"",COLUMN($A:$F)),COUNTIF(J$2:J2,J2)))

在L2輸入數組公式:

=OFFSET(A$1,MATCH(J2,A$2:A$17,),SMALL(IF(OFFSET(B$1,MATCH(J2,A$2:A$17,),,,6)<>"",COLUMN($A:$F)),COUNTIF(J$2:J2,J2)))

然后選擇K2:L2,雙擊填充柄將公式填充到這兩列的其余單元格。

excel橫向變縱向 Excel中數據從橫向排列到縱向排列的復雜轉換的幾種方法

方法三、用VBA

用下面的VBA代碼也可實現上述轉換,方法是按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼下列代碼并運行。

Sub 轉換()

Dim Arr1, Arr2()

Dim Rnum As Integer, Cnum As Integer, Tnum As Integer

Dim i As Integer, j As Integer, k As Integer

Application.ScreenUpdating = False

Rnum = [A65536].End(xlUp).Row

Cnum = 7

Tnum = Rnum * Cnum

Range("J2:L" & Tnum).ClearContents

Arr1 = Range("A1:G" & Rnum)

ReDim Arr2(1 To Tnum, 1 To 3)

For i = 2 To Rnum

For j = 2 To Cnum

If Arr1(i, j) <> "" Then

k = k + 1:

Arr2(k, 1) = Arr1(i, 1)

Arr2(k, 2) = Arr1(1, j)

Arr2(k, 3) = Arr1(i, j)

End If

Next

Next

Range("J2").Resize(k, UBound(Arr2, 2)) = Arr2

Application.ScreenUpdating = True

End Sub

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
精品伊人久久大香线蕉网站| 99国产精品免费视频观看| 内射一区二区精品视频在线观看 | 亚洲欧美日韩中文二区| 国产精品高清在线观看93| 最新欧美精品一区二区三区| 精品无码一区二区三区爱欲九九 | 中文字幕精品无码亚洲字| 牛牛在线精品免费视频观看| 国产主播福利精品一区二区| 精品国产成a人在线观看| 亚洲av午夜国产精品无码中文字| 日韩精品一区二区三区老鸭窝 | 51视频精品全部免费最新| 久久久精品2019中文字幕2020| 精品福利一区二区三| 自拍偷自拍亚洲精品被多人伦好爽| 国产精品美女久久久久AV福利| 成人精品视频在线观看| 精品成人一区二区三区免费视频| 99热在线日韩精品免费| 国产精品不卡在线| 国产精品久久久久久影视| 国产美女精品三级在线观看| 国产精品无码2021在线观看| 色婷婷激情av精品影院| 亚洲国产成人久久精品大牛影视| 国产精品自在拍在线拍 | 日韩精品午夜视频一区二区三区| 欧美交A欧美精品喷水| 无码人妻精品一区二区蜜桃| 亚洲午夜精品久久久久久app| 热久久视久久精品18| 91精品国产91| 久久精品中文字幕大胸| 日韩免费精品视频| 久久精品a一国产成人免费网站| 日韩国产精品亚洲а∨天堂免| 无码人妻精品一区二区蜜桃| 国产精品国产亚洲区艳妇糸列短篇| 国内精品在线播放|