Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 选择每第n行并移动到列_Vba_Excel_Excel 2007 - Fatal编程技术网

Vba 选择每第n行并移动到列

Vba 选择每第n行并移动到列,vba,excel,excel-2007,Vba,Excel,Excel 2007,我一直在寻找一些可能的答案,但由于对Excel宏不太熟悉,我不确定如何调整任何可能的解决方案以满足我的直接需求 因此,我目前有一个Excel数据集,每个数据集包含10000条记录,如下示例所示: Name Street City, State Zip Name Street City, State Zip etc 我的愿望是能够将street中的所有行移动到自己的列中,并将城市、州邮政编码移动到自己的列中 因此,电子表格如下所示: Name Street City, State

我一直在寻找一些可能的答案,但由于对Excel宏不太熟悉,我不确定如何调整任何可能的解决方案以满足我的直接需求

因此,我目前有一个Excel数据集,每个数据集包含10000条记录,如下示例所示:

Name
Street
City, State Zip
Name
Street
City, State Zip
etc
我的愿望是能够将
street
中的所有行移动到自己的列中,并将
城市、州邮政编码移动到自己的列中

因此,电子表格如下所示:

Name     Street    City, State    Zip
Name     Street    City, State    Zip
Name     Street    City, State    Zip

这里有一个简单的
Sub
来重塑您的数据,并用som注释来解释每个步骤

它没有数据完整性检查或错误处理功能,您应该添加这些功能以创建一个健壮的解决方案

Sub ReshapeData()
    Dim rng As Range
    Dim Src As Variant, Dst As Variant
    Dim i As Long

    ' Get Data From Sheet
    ' Assumes data starts at A1 on active sheet and has no gaps
    Set rng = Range([A1], [A1].End(xlDown))
    ' Copy data to a variant array
    Src = rng
    ' Set size of another array to match result
    ReDim Dst(1 To UBound(Src) / 3, 1 To 3)
    '  Loop through source array, copy data to desination array
    For i = 0 To UBound(Dst) - 1
        Dst(i + 1, 1) = Src(i * 3 + 1, 1)
        Dst(i + 1, 2) = Src(i * 3 + 2, 1)
        Dst(i + 1, 3) = Src(i * 3 + 3, 1)
    Next
    ' Delete original data
    rng.ClearContents
    ' Put new data on sheet
    rng.Resize(UBound(Dst), 3) = Dst
End Sub

所有的记录都有三行吗?如果城市不见了,逗号还在吗?州和Zip之间没有逗号?是的,这非常有效。不幸的是,由于时间限制,我当时不得不找到一种不那么优雅(也不那么乏味)的方法来管理项目,这对未来来说无疑是一个好消息。