Vba 技巧:将所有数据从C列移动到最后一个占用的列,删除中间的所有空单元格,并将所有数据向右移动

Vba 技巧:将所有数据从C列移动到最后一个占用的列,删除中间的所有空单元格,并将所有数据向右移动,vba,excel,Vba,Excel,参考下图,我试图将所有数据点从C列移到最后一个占用的列(在本例中为N,但在其他情况下,它们会变化,但不会超过U列),并将它们全部移到(AA)列作为最后一个右列,同时删除中间的所有空单元格 如果有人能帮我,我将不胜感激 预期输出如下: 您可能想试试这个 Option Explicit Sub main() Dim row As Range Dim arr As Variant With Worksheets("AlignSheetName") '<--| cha

参考下图,我试图将所有数据点从C列移到最后一个占用的列(在本例中为N,但在其他情况下,它们会变化,但不会超过U列),并将它们全部移到(AA)列作为最后一个右列,同时删除中间的所有空单元格

如果有人能帮我,我将不胜感激

预期输出如下:


您可能想试试这个

Option Explicit

Sub main()
    Dim row As Range
    Dim arr As Variant

    With Worksheets("AlignSheetName") '<--| change "AlignSheetName" to your actual worksheet name
        With Intersect(.UsedRange, .Columns(3).Resize(, .UsedRange.Columns(.UsedRange.Columns.Count).Column - 2))
            For Each row In .Rows
                arr = Split(WorksheetFunction.Trim(Join(Application.Transpose(Application.Transpose(row.Value)), " ")), " ")
                row.ClearContents
                row.Cells(1, 1).Offset(, 27 - 3 - WorksheetFunction.CountA(row) - 1).Resize(, WorksheetFunction.CountA(row)).Value = arr
            Next row
        End With
    End With
End Sub
选项显式
副标题()
暗行作为范围
作为变体的Dim-arr

使用工作表(“AlignSheetName”)Shawn,阅读并尝试调整您的工作表以满足这些准则。你被某人否决了,因为你提出的问题没有证明你已经付出了努力。如果不确定从何处开始,请尝试查找“最后一列vba”和
Range.EntireColumn
Range.Delete
。如果您无法从中获得工作代码,请将您的努力和代码不工作的地方张贴出来,我们将非常乐意帮助您解决问题。:)嗨,泰勒,谢谢你的反馈。我在这里很新,事实上,这是我的第一篇文章,也是我的第一次VBA编码经验。谢谢你的回复,我会试试看它是否对我有用!回头看看,你把它弄好了吗?