我有一个包含2列的Excel工作表,如下所示:
IMPORT_ID EXPORT_ID
SI1313721 SI1440839
SI1313721 SI1440997
SI1313722 SI1440672
SI1313722 SI1440776
SI1313722 SI1441313
IMPORT_ID正在重复(SI1313721 - 2次,SI1313722 - 3次)。我想把这张表转换成
SI1313721 SI1440839 SI1440997
SI1313722 SI1440672 SI1440776 SI1441313
如何使用vba在Excel中执行此操作?
答案 0 :(得分:1)
我不确定他们在正确的事情上的顺序是否重要,但你可以试试这个。
Sub TransposingColumns_to_Avoid_redundancies()
Dim rw As Long, p As Long
With ActiveSheet '<- set this worksheet reference properly!
For rw = .Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1
If CBool(Application.CountIf(.Cells(1, 1).Resize(rw - 1), .Cells(rw, 1).Value2)) Then
p = Application.Match(.Cells(rw, 1).Value2, .Cells(1, 1).Resize(rw - 1), 0)
.Cells(p, Columns.Count).End(xlToLeft).Offset(0, 1) = .Cells(rw, 2).Value2
.Rows(rw).EntireRow.Delete
End If
Next rw
End With
End Sub
当列B中的值向右堆叠时,行将被删除。通常最好从底部开始,然后在删除行时进行操作。