首页 文章

Excel:分裂;将单元格值分隔为列,然后在连续的行中移位

提问于
浏览
0

我处于图1描述的情况,其中我有一个带有引用名称的单元格和一个带有一个或多个分号分隔的电子邮件的单元格,这些电子邮件与同一个引用相关联 . 我想拆分包含多个电子邮件的单元格,然后连续堆叠它们并复制refence名称 . 是否可以使用Excel 2007中的VBA宏执行此操作?我知道存在“Split in columns”命令,但我不知道如何自动移动行中的列并复制引用名称 . 提前致谢 .

enter image description here

2 回答

  • 0

    干得好:

    Sub SplitColumnB()
        Dim r As Range
        Set r = [B2]
        Do While r.Value <> ""
            res = Split(r.Value, " ; ")
            i = 0
            For Each resStr In res
                If i > 0 Then r.Offset(1).EntireRow.Insert xlDown
                r.Offset(IIf(i > 0, 1, 0)).Value = resStr
                r.Offset(IIf(i > 0, 1, 0), -1).Value = Right(resStr, Len(resStr) - InStr(resStr, "@"))
                i = i + 1
            Next
            Set r = r.Offset(IIf(i > 0, i, 1))
        Loop
    End Sub
    
  • 1

    尝试使用以下代码 . 将 Sheet1 的所有实例替换为工作表的名称 .

    Sub test()
    
        Dim Ref As String
        Dim Eid As String
        Dim RefR()
        Dim EidR()
    
        Rcnt = Sheets("Sheet1").Range("A65000").End(xlUp).Row
        K = 0
        L = 0
    
        For i = 2 To Rcnt
            Ref = Sheets("Sheet1").Range("A" & i).Value
            Temp = Split(Sheets("Sheet1").Range("B" & i).Value, ";")
            K = K + 1
            ReDim Preserve RefR(1 To K)
            RefR(K) = Ref
    
            For j = LBound(Temp) To UBound(Temp)
                If L <= UBound(Temp) Then
                    ReDim Preserve EidR(Rcnt, L)
                    L = UBound(Temp)
                End If
                EidR(K, j) = Temp(j)
            Next j
        Next i
    
        RowValue = 2
        For i = 1 To UBound(RefR)
            For j = 0 To L
    
                Sheets("Sheet1").Range("A" & RowValue).Value = RefR(i)
                Sheets("Sheet1").Range("B" & RowValue).Value = Trim(EidR(i, j))
                RowValue = RowValue + 1
            Next j
        Next i
    
    End Sub
    

相关问题