Excel从列到列的映射

Excel从列到列的映射,excel,excel-formula,vba,Excel,Excel Formula,Vba,我在Excel中有以下格式的数据: 输入: 我希望数据采用后续格式,即输出 Col1 | Col2 A1 |B1 A2 |B2 A3 |B3 A4 |B4 A5 |B5 A6 |B6 A7 |B7 A8 |B8 我尝试了很多,但没有找到任何解决方案,关于如何框架这个问题,或在excel中这样做。 我们将非常感谢您的每一个帮助/指导/链接。 提前谢谢。我没有答案,但我要提醒您,不要将此类非规范化数据存储在Excel(或数据库)中。Excel也不是这种数据清理操作的最佳工具。两列中的项目数是否相同

我在Excel中有以下格式的数据: 输入:

我希望数据采用后续格式,即输出

Col1 | Col2
A1 |B1
A2 |B2
A3 |B3
A4 |B4
A5 |B5
A6 |B6
A7 |B7
A8 |B8
我尝试了很多,但没有找到任何解决方案,关于如何框架这个问题,或在excel中这样做。 我们将非常感谢您的每一个帮助/指导/链接。
提前谢谢。

我没有答案,但我要提醒您,不要将此类非规范化数据存储在Excel(或数据库)中。Excel也不是这种数据清理操作的最佳工具。两列中的项目数是否相同(如果有多个项目)?是的,特定行的列中的项目数相同。@TimBiegeleisen:谢谢您的关注,但这是从outlook for CCed电子邮件中提取数据的格式。:)您有权访问Java、C#、Perl等吗。?使用不同的工具,这个问题会容易得多。非常感谢。你让我开心。
Sub Test()

    Dim arr1(), arr2(), split1, split2
    Dim rng As Range, rngRow As Range
    Dim x As Integer, z As Integer

    'Assuming data starts from A1 cell
    Set rng = Range("A1").CurrentRegion

    For Each rngRow In rng.Rows
        split1 = Split(rngRow.Cells(1), ";")
        split2 = Split(rngRow.Cells(2), ";")
        For x = LBound(split1) To UBound(split1)
            z = z + 1
            ReDim Preserve arr1(1 To z)
            ReDim Preserve arr2(1 To z)
            arr1(z) = split1(x)
            arr2(z) = split2(x)
        Next
    Next

    Range("D1").Resize(UBound(arr1), 1).Value = Application.Transpose(arr1)
    Range("E1").Resize(UBound(arr2), 1).Value = Application.Transpose(arr2)


End Sub
Sub Test()

    Dim arr1(), arr2(), split1, split2
    Dim rng As Range, rngRow As Range
    Dim x As Integer, z As Integer

    'Assuming data starts from A1 cell
    Set rng = Range("A1").CurrentRegion

    For Each rngRow In rng.Rows
        split1 = Split(rngRow.Cells(1), ";")
        split2 = Split(rngRow.Cells(2), ";")
        For x = LBound(split1) To UBound(split1)
            z = z + 1
            ReDim Preserve arr1(1 To z)
            ReDim Preserve arr2(1 To z)
            arr1(z) = split1(x)
            arr2(z) = split2(x)
        Next
    Next

    Range("D1").Resize(UBound(arr1), 1).Value = Application.Transpose(arr1)
    Range("E1").Resize(UBound(arr2), 1).Value = Application.Transpose(arr2)


End Sub