正如您在此Excel示例中所看到的,列A具有混合数据。
粗体M号码是"键"并且缩进的蓝色文本和蓝色链接到它。我试图找出如何将蓝色文本与粗体M数字分开,但是当我尝试将这些数据插入SQL数据库时,请将它们保持链接。
例如,这是我想要的输出,所以我可以将它插入到我的数据库表中。
我已经尝试过将文字添加到专栏,但是我将问题与相应的粗体数字相关联。我认为这是excel-vba的召唤,但我不知道从哪里开始。任何帮助将不胜感激。
答案 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列。