Excel怎樣把三列XYZ表轉(zhuǎn)X不重復(fù)YZ多重表
修法布施得聰明智慧,多分享讓生活更美好。上次分享了《Excel怎樣把YXZ三列數(shù)據(jù)表轉(zhuǎn)一列Y多列XZ數(shù)據(jù)表》,介紹了把YXZ三列數(shù)據(jù)表轉(zhuǎn)一列Y多列XZ數(shù)據(jù)表處理方法,下面通過(guò)一實(shí)例分享把三列XYZ表轉(zhuǎn)
修法布施得聰明智慧,多分享讓生活更美好。上次分享了《Excel怎樣把YXZ三列數(shù)據(jù)表轉(zhuǎn)一列Y多列XZ數(shù)據(jù)表》,介紹了把YXZ三列數(shù)據(jù)表轉(zhuǎn)一列Y多列XZ數(shù)據(jù)表處理方法,下面通過(guò)一實(shí)例分享把三列XYZ表轉(zhuǎn)X不重復(fù)YZ多重表處理方法。
實(shí)例演示
如圖一轉(zhuǎn)圖二。首先打開(kāi)Microsoft Office Excel 2007,上例文件另存文件名《Excel怎樣把三列XYZ表轉(zhuǎn)X不重復(fù)YZ多重表.xlsm》(演示文件,下面代碼復(fù)制到能運(yùn)行宏的工作簿都可以)如圖。
VBE編輯界面
然后按下快捷鍵ALT F11打開(kāi)VBE(宏)編輯界面,然后點(diǎn)菜單欄【插入】下拉中列表中點(diǎn)【模塊(M)】如圖。
插入模塊與代碼復(fù)制
然后插入了一個(gè)模塊1,在代碼框中復(fù)制如下代碼:
```vba
Sub 三列XYZ轉(zhuǎn)X不重YZ多重()
Dim myrs As Range, r As Long, c As Long, i As Long, j As Long, d
Dim mb(), n As Long, mc(), myr As Range
Set myrs Selection
r
c
Set d CreateObject("scripting.dictionary")
On Error Resume Next
For i 2 To r
myrs.Cells(i, 1).Value, ""
Next i
mb
n 0
For i 0 To UBound(mb)
For j 2 To r
If mb(i) myrs.Cells(j, 1).Value Then
n n 1
End If
Next j
If i 0 Then
k n
Else
If k < n Then k n
End If
n 0
Next i
ReDim mc(1 To UBound(mb) 2, 1 To 2 * k 1)
mc(1, 1) myrs.Cells(1, 1).Value
n 0
For i 1 To k * 2
If i Mod 2 1 Then
n n 1
mc(1, i 1) myrs.Cells(1, 2).Value n
ElseIf i Mod 2 0 Then
mc(1, i 1) myrs.Cells(1, 3).Value n
End If
Next i
n 1
For i 0 To UBound(mb)
For j 2 To r
If mb(i) myrs.Cells(j, 1).Value Then
n n 1
mc(i 2, 1) mb(i)
mc(i 2, n) myrs.Cells(j, 2).Value
mc(i 2, n 1) myrs.Cells(j, 3).Value
End If
Next j
n 1
Next i
Set myr (prompt:"請(qǐng)選擇轉(zhuǎn)出數(shù)據(jù)一個(gè)單元格", Type:8)
(UBound(mb) 2, k * 2 1) mc
End Sub
```
操作步驟
以上操作動(dòng)態(tài)過(guò)程如下:
1. 回到工作表窗口,首先選數(shù)據(jù)單元格區(qū)域,然后運(yùn)行【三列XYZ轉(zhuǎn)X不重YZ多重】宏(菜單欄中點(diǎn)【視圖】中下列表中【宏】列表【查看宏(V)】打開(kāi)宏對(duì)方框,選該宏名,執(zhí)行);
2. 提示“請(qǐng)選擇轉(zhuǎn)出數(shù)據(jù)一個(gè)單元格”,選好后輸出結(jié)果,運(yùn)行過(guò)程如下圖。
感謝與建議
如果覺(jué)得這篇經(jīng)驗(yàn)幫到了您,請(qǐng)點(diǎn)擊下方的“投票點(diǎn)贊”或者“收藏”支持我!還有疑問(wèn)的話可以點(diǎn)擊下方的“我有疑問(wèn)”,謝謝啦!