我有一张Excel工作表,我试图进入MySQL数据库。
问题是某些单元格的字符串用逗号分隔,逗号的一边是字符串是黑色,另一边是蓝色(反之亦然,单元格中可以有更多的逗号和字符串)。
我尝试了什么
我可以使用VBA中的Split
函数提取字符串,但会丢失字符串的格式。
我可以使用Range("mycell").Font.ColorIndex
获取单元格的颜色,但如果字符串中有多个颜色,则返回NULL
。
是否可以获得字符串的所有颜色?
示例:一个单元格可以包含以下字符串
" W345,PO3244,12309"
1.(W345)为黑色(colorindex -4105),
2.(PO3244)为蓝色(colorindex 47)
3.(12309)为红色(colorindex 3)。
答案 0 :(得分:1)
您可以使用以下内容然后创建字典/集合/数组来存储颜色,并且只保留唯一值或适合您情况的任何解决方案。这只是展示了如何访问所有颜色。
Sub AllColors()
Dim r As Range
Dim x As Integer
Set r = Selection
For x = 1 To Len(r.Value)
Debug.Print r.Characters(x, 1).Font.ColorIndex
Next x
End Sub
答案 1 :(得分:1)
我使用.Font.Color
来剔除RGB值,但如果愿意,可以将其更改为ColorIndex。
您可以采用此策略:
Sub CellColors2CSV()
Dim j&, k&, c$, r As Range
Set r = ActiveSheet.Cells(1, 1)
Do
j = Len(r)
k = InStr(k + 1, r, ",")
If k Then j = k - 1
c = c & "," & r.Characters(j, 1).Font.Color
Loop Until k = 0
c = Mid$(c, 2)
MsgBox c
End Sub
答案 2 :(得分:0)
在Excel Hero的答案之后,我设法编写了满足我需求的代码,这是一个返回Collection中颜色的函数(也可能是一个数组):
interrupt()