1

我有一个需要格式化以进行处理的值列表,并且数据的格式不适合其当前形式。

这些值当前采用以下格式:

有太多记录无法手动尝试。使用公式或 VBA 自动化流程的最佳方法是什么?

编辑:C3:C4 中的值出现在工作表中的每组记录中。它们下方的单元格数量可以从 1 到 3,000 不等。

谢谢你的帮助。

编辑:蒂姆你给了我很大的帮助,我非常感谢 - 编辑后的版本由于某种原因不起作用。无论如何,我对它进行了非常基本的修改,以循环并清空我不想标记的单元格值。再次感谢。

Sub Tester()

Const STATUS_FLAG As String = "status code:*"

Dim v1, v2
Dim c As Range
Dim sht As Worksheet

    Set sht = ActiveSheet
    Application.ScreenUpdating = False
    For Each c In sht.Range(sht.Range("C1"), sht.Cells(Rows.Count, 3).End(xlUp))
        If c.Value Like STATUS_FLAG Then
            v1 = c.Offset(-2, 0)
            v2 = c.Offset(-1, 0)
        ElseIf c.Value Like "http:*" Then
            c.Offset(0, -2).Value = v1
            c.Offset(0, -1).Value = v2
        End If
        If c.Value Like STATUS_FLAG Then
            c.Offset(-2, -2).Value = ""
            c.Offset(-2, -1).Value = ""
            c.Offset(-1, -2).Value = ""
            c.Offset(-1, -1).Value = ""
        End If
    Next c
    Application.ScreenUpdating = True

End Sub  
4

1 回答 1

2

编辑:不要填写“源”路径(v1,v2)旁边

Sub Tester()

Const STATUS_FLAG As String = "Status code:*"

Dim v1, v2
Dim c As Range
Dim sht As Worksheet

    Set sht = ActiveSheet
    Application.ScreenUpdating = False
    For Each c In sht.Range(sht.Range("C1"), sht.Cells(Rows.Count, 3).End(xlUp))
        If Len(c.Value)=0 Then
            'reset on blank row
            v1=""
            v2=""
        ElseIf c.Value Like STATUS_FLAG Then
            v1 = c.Offset(-2, 0)
            v2 = c.Offset(-1, 0)
        ElseIf c.Value Like "http:*" and Len(v1)>0 Then
            c.Offset(0, -2).Value = v1
            c.Offset(0, -1).Value = v2
        End If
    Next c
    Application.ScreenUpdating = True

End Sub
于 2012-10-29T16:49:10.800 回答