Excel VBA:删除单元格中的删除线字符

Excel VBA:删除单元格中的删除线字符,vba,excel,Vba,Excel,我有大约1000行数据。有些单元格由删除线字符和正常字符组成。我只想删除删除删除线的字符,并将其他非删除线字符保留在这些单元格中。 单元格的其余部分也应保持不变 单元格中的示例: 删除线 124 代码应将单元格值更改为: 124 不删除整个单元格。试试这个 Sub Macro1() Dim oCell As Range, i%, z% For Each oCell In Range("A1:A6") z = Len(oCell.Value) i = 1 While z &

我有大约1000行数据。有些单元格由删除线字符和正常字符组成。我只想删除删除删除线的字符,并将其他非删除线字符保留在这些单元格中。 单元格的其余部分也应保持不变

单元格中的示例:

删除线 124

代码应将单元格值更改为:

124

不删除整个单元格。

试试这个

Sub Macro1()
Dim oCell As Range, i%, z%
For Each oCell In Range("A1:A6")
    z = Len(oCell.Value)
    i = 1
    While z <> 0
        If oCell.Characters(Start:=i, Length:=1).Font.Strikethrough = True Then
            oCell.Characters(Start:=i, Length:=1).Caption = ""
            i = i - 1
        End If
        i = i + 1
        z = z - 1
    Wend
Next
End Sub
试试这个

Sub Macro1()
Dim oCell As Range, i%, z%
For Each oCell In Range("A1:A6")
    z = Len(oCell.Value)
    i = 1
    While z <> 0
        If oCell.Characters(Start:=i, Length:=1).Font.Strikethrough = True Then
            oCell.Characters(Start:=i, Length:=1).Caption = ""
            i = i - 1
        End If
        i = i + 1
        z = z - 1
    Wend
Next
End Sub
从字符中删除时,从右向左循环更容易:

Sub Demo()
    Dim rng As Range, cl As Range
    Dim i As Long

    Set rng = [A1:A3] ' Get range of interest

    For Each cl In rng.Cells
    For i = Len(cl.Value) To 1 Step -1
        If cl.Characters(i, 1).Font.Strikethrough Then
            cl.Characters(i, 1).Delete
        End If
    Next i, cl

End Sub
从字符中删除时,从右向左循环更容易:

Sub Demo()
    Dim rng As Range, cl As Range
    Dim i As Long

    Set rng = [A1:A3] ' Get range of interest

    For Each cl In rng.Cells
    For i = Len(cl.Value) To 1 Step -1
        If cl.Characters(i, 1).Font.Strikethrough Then
            cl.Characters(i, 1).Delete
        End If
    Next i, cl

End Sub