有没有办法只复制某种格式的文字,而忽略其余的文字?

时间:2015-08-05 18:56:15

标签: excel vba excel-vba

我在单元格中有数据,这些数据表示不同格式的不同内容。它类似于以下内容: 146976 12323 8448948 983893 。我只需要提取粗体数据(如果重要的话,它也是红色的),而忽略斜体数据。

最初我尝试使用If语句,但只有在条件达到100%时才有效,并且我尝试使用text-to-columns功能拆分单元格,但是文本的格式没有进行到了新的细胞。

我将在一个不应该要求用户操作的宏中运行它。这有可能吗?非常感谢!

2 个答案:

答案 0 :(得分:0)

考虑三个单元格:

A1: BOLD

A2:常规

A3:斜体

使用代码:

Sub CheckFormat()
Dim cell As Range

For Each cell In Range("A1:A3")
    If cell.Font.Bold = True Then
        Debug.Print "Cell: " + cell.Address + " is bold"
    End If
Next cell

End Sub

输出:Cell :$A$1 is bold

答案 1 :(得分:0)

这显示单元格中的粗体字符(数字或字母):

Option Explicit

Public Sub extractBoldText()

    Dim i As Long, boldStart As Long, boldTotal As Long, cel As Range, sz As Long

    Set cel = Cells(1, 1)   'A1 contains "146976 12323 8448948 983893"; 12323 is bold
    sz = Len(cel)

    If sz > 0 Then
        While Not cel.Characters(Start:=i, Length:=1).Font.Bold And i < sz
            i = i + 1
        Wend
        boldStart = IIf(i = 0, 1, i)
        While cel.Characters(Start:=i, Length:=1).Font.Bold And i < sz
            i = i + 1
        Wend
        boldTotal = IIf(i = sz, i, i - boldStart)
    End If

    If boldTotal > 0 Then MsgBox Mid(cel, boldStart, boldTotal) 'Will output "12323"

End Sub