2016 - 2024

感恩一路有你

Excel怎样把三列XYZ表转X不重复YZ多重表

浏览量:1657 时间:2024-02-05 14:19:53 作者:采采

修法布施得聪明智慧,多分享让生活更美好。上次分享了《Excel怎样把YXZ三列数据表转一列Y多列XZ数据表》,介绍了把YXZ三列数据表转一列Y多列XZ数据表处理方法,下面通过一实例分享把三列XYZ表转X不重复YZ多重表处理方法。

实例演示

如图一转图二。首先打开Microsoft Office Excel 2007,上例文件另存文件名《Excel怎样把三列XYZ表转X不重复YZ多重表.xlsm》(演示文件,下面代码复制到能运行宏的工作簿都可以)如图。

VBE编辑界面

然后按下快捷键ALT F11打开VBE(宏)编辑界面,然后点菜单栏【插入】下拉中列表中点【模块(M)】如图。

插入模块与代码复制

然后插入了一个模块1,在代码框中复制如下代码:

```vba

Sub 三列XYZ转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:"请选择转出数据一个单元格", Type:8)

(UBound(mb) 2, k * 2 1) mc

End Sub

```

操作步骤

以上操作动态过程如下:

1. 回到工作表窗口,首先选数据单元格区域,然后运行【三列XYZ转X不重YZ多重】宏(菜单栏中点【视图】中下列表中【宏】列表【查看宏(V)】打开宏对方框,选该宏名,执行);

2. 提示“请选择转出数据一个单元格”,选好后输出结果,运行过程如下图。

感谢与建议

如果觉得这篇经验帮到了您,请点击下方的“投票点赞”或者“收藏”支持我!还有疑问的话可以点击下方的“我有疑问”,谢谢啦!

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。