在列和行中分隔数据,并链接到值

时间:2017-02-21 13:45:52

标签: excel vba split multiple-columns rows

正如您在此Excel示例中所看到的,列A具有混合数据。

Example of mixed data

粗体M号码是"键"并且缩进的蓝色文本和蓝色链接到它。我试图找出如何将蓝色文本与粗体M数字分开,但是当我尝试将这些数据插入SQL数据库时,请将它们保持链接。

例如,这是我想要的输出,所以我可以将它插入到我的数据库表中。

Example of separated data

我已经尝试过将文字添加到专栏,但是我将问题与相应的粗体数字相关联。我认为这是excel-vba的召唤,但我不知道从哪里开始。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您不需要VBA。如果BOLD值始终以" M"然后执行以下操作:

B1: =A1
B2: =IF(LEFT(A2,1)="M",A2,B1)
C1: =IF(LEFT(A1,1)="M","",A1)

结果将根据需要在B和C列填充数据。

答案 1 :(得分:0)

如果您有任何需要VBA,您可能会选择以下内容:

Option Explicit

Public Sub TestMe()

    Dim rngCell         As Range

    Dim colBold         As New Collection
    Dim colNormal       As New Collection
    Dim colTimes        As New Collection

    Dim varMy           As Variant
    Dim lngCounter      As Long
    Dim lngSum          As Long
    Dim lngCur          As Long
    Dim lngBoldCounter  As Long
    Dim lngMax          As Long
    Dim rngMyRange      As Range

    Set rngMyRange = Range("A1:A20")

    For Each rngCell In rngMyRange
        If rngCell.Font.Bold Then
            colTimes.Add lngSum
            colBold.Add rngCell
            lngCounter = 0
        Else
            lngSum = lngSum + 1
            lngCounter = lngCounter + 1
            colNormal.Add rngCell
        End If
    Next rngCell

    lngCounter = 1
    lngSum = 0
    lngBoldCounter = 1

    lngMax = colBold.Count + 1
    rngMyRange.Offset(, 4).Clear
    rngMyRange.Offset(, 5).Clear

    For Each varMy In colNormal

        Cells(lngCounter, 5) = varMy
        Cells(lngCounter, 6) = colBold(lngBoldCounter)

        If lngCounter < colNormal.Count Then
            If colTimes(lngBoldCounter + 1) <= lngCounter Then
                lngBoldCounter = lngBoldCounter + 1
                If lngBoldCounter = lngMax Then
                    lngBoldCounter = lngBoldCounter - 1
                    Debug.Print varMy.Address
                End If
            End If
        End If

        lngCounter = lngCounter + 1
    Next varMy

End Sub

代码不是最优的,因为我已经在旅途中制作了它,但是它考虑了粗体并产生了关于它们的第5列和第6列。

enter image description here