复制列根据类似数据对齐

时间:2014-03-13 20:16:42

标签: excel

我正在建立一个5年的历史,我从5个不同的工作表中复制两列数据。列标题是代理和金额结算年xx。每年没有相同数量的数据;例如,如果我建立第一年然后再增加一年,可能会有一些机构不在第一年或某些机构在第一年但不在第二年等等,因为我继续增加所有5年。我手动调整了每一列以排列代理商名称,这是一项艰巨的任务。我试图找到可以自动化该过程的代码,但我发现只是比较两列。我想从两列开始,再添加两列,再添加两列,依此类推,然后运行代码,根据代理商名称排列数据,并附上相应的年度xx。

我希望我的要求清楚。我感谢任何我可以改变的代码来完成这项任务。

2 个答案:

答案 0 :(得分:0)

在每个工作表中添加一列,将其命名为Year。用年份填写,然后将5个工作表数据放在同一个工作表中,只需将每个工作表数据粘贴到prevoius下面。然后你用它制作一个简单的数据透视表。

答案 1 :(得分:0)

感谢您的建议。我使用代码而且效果很好。这是代码:

Sub test()
Dim a, i As Long, ii As Long, txt As String, w, x
With Cells(1).CurrentRegion.Offset(1)
    a = .Value: .Borders.LineStyle = xlNone
    With CreateObject("System.Collections.SortedList")
        For i = 1 To UBound(a, 1)
            For ii = 1 To UBound(a, 2) Step 2
                If a(i, ii) <> "" Then
                    txt = LCase(a(i, ii))
                    If Not .Contains(txt) Then
                        ReDim w(1 To UBound(a, 2))
                        .Item(txt) = w
                    Else
                        w = .Item(txt)
                    End If
                    w(ii) = a(i, ii): w(ii + 1) = a(i, ii + 1)
                    .Item(txt) = w
                End If
            Next
        Next
        Set x = .Clone
    End With
    For i = 0 To x.Count - 1
        .Cells(i + 1, 1).Resize(, .Columns.Count).Value = x.GetByIndex(i)
    Next
End With
With Cells(1).CurrentRegion
    For i = 2 To .Columns.Count Step 2
        .Columns(i).Borders(10).Weight = 2
    Next
End With

End Sub