VBA:删除角色之前的所有内容,包括角色

时间:2017-11-09 14:08:08

标签: vba excel-vba command excel

我有包含大量数据的excel表,需要进行解析。 对我来说这是一个很大的项目,到目前为止已经成功实现了它,但是一些小的东西阻止了我。 在我的一个领域,我有:

sadadasd|2|adsgfas
sadadasd|1|adsgfas 
sadadasd|0|adsgfas

我想要做的是包含

的行
|1| -> delete entire row
|2| -> delete everything before |1| including |1|
|0| -> Delete cell value.

我有0和2的条件,但我缺少1。 我目前正在使用以下代码:

Dim myRange As Range
Dim myCell As Range
Set myRange = Range("H4:H1000")
For Each myCell In myRange
If myCell Like "*|0|*" Then

myCell.ClearContents


ElseIf myCell Like "*|1|*" Then
myCell.EntireRow.Delete

ElseIf myCell Like "*|2|*" Then
  result_3

Else
End If
Next myCell

你能帮我用一个删除除了后面文字之外的所有内容的命令替换result_3吗?我确信已经有了一个解决方案,但我花了太多时间在那个,我需要尽快完成项目。 先感谢您!

2 个答案:

答案 0 :(得分:1)

尝试一下:

Sub qwerty()
    Dim i As Long, v As String, vv As String

    For i = 1000 To 4 Step -1
        With Cells(i, "H")
            v = .Value
            vv = Mid(v, 10, 2)
            Select Case vv
            Case "2|"
                .EntireRow.Delete
            Case "1|"
                .Value = Mid(v, 12, 9999)
            Case "0|"
                .Clear
            End Select
        End With
    Next i
End Sub

如果您的记录不是固定长度:

Sub qwerty()
    Dim i As Long, v As String

    For i = 1000 To 4 Step -1
        With Cells(i, "H")
            v = .Value
            If InStr(1, v, "|") > 0 Then
                Select Case Split(v, "|")(1)
                Case "2"
                    .EntireRow.Delete
                Case "1"
                    .Value = Split(v, "|")(2)
                Case "0"
                    .Clear
                End Select
            End If
        End With
    Next i
End Sub

答案 1 :(得分:0)

删除数字1之前的所有内容,包括“|”字符。

myCell.Value = Right(myCell.Value, Len(myCell.Value) - InStr(myCell.Value, "1") + 1)

从您对问题的解释来看,您似乎正在混合*|1|**|2|*的解决方案。