将所选行中的所有数据移动到最上面的所选行中

问题描述 投票:0回答:1

又一个问题。

我正在寻找一个函数或宏将所有数据从选定的一系列行移动到选定区域的最上面一行。

例如,Romboutsia 有 12 行(84 到 95),所有行将(/应该)有 1 个数据点。我希望将所选行中的所有数据移至该组的最上面一行。因此,来自 C87 的数据需要移至 C84、D90 移至 D84、E93 移至 E84、F85 移至 F84、J86 移至 J84 等等...

对于 A 列中选定的相同名称分组,行中永远不会有两组数据。

然后我可以对下一组选定的行重复该过程,依此类推。

让我的生活变得更轻松,而不是手动处理 10000 条或几行数据。

excel vba move
1个回答
0
投票
Option Explicit

Sub Demo()
    Dim i As Long, j As Long
    Dim arrData, rngData As Range
    Dim arrRes, iR As Long, sKey As String
    Set rngData = ActiveSheet.Range("A1").CurrentRegion
    arrData = rngData.Value
    For i = LBound(arrData) + 1 To UBound(arrData)
        If Not sKey = arrData(i, 1) Then
            sKey = arrData(i, 1)
            iR = i
        End If
        For j = LBound(arrData, 2) + 1 To UBound(arrData, 2)
            If Len(arrData(i, j)) > 0 Then
                If i <> iR Then
                    arrData(iR, j) = arrData(i, j)
                    arrData(i, j) = ""
                End If
                Exit For
            End If
        Next j
    Next i
    rngData.Value = arrData
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.