当string更改时,在Excel中添加标题行

我有一个Excel工作表,其中有一个stringpath的列“A”像这样:

foo\bar foo\bar foo\bar foo\bar foo\bar foo\widget foo\widget foo\widget foo\zelda foo\zelda foo\zelda 

我需要在path每次更改之前添加一个标题行,所以应该如下所示:

 Bar: foo\bar foo\bar foo\bar foo\bar foo\bar Widget: foo\widget foo\widget foo\widget Zelda: foo\zelda foo\zelda foo\zelda 

我不知道从哪里开始,因为我不是一个vba专家。 这在VBA中是可行的吗?

这应该工作(假设你的数据在列A):

 Sub insertHeaderRow() Application.ScreenUpdating = False Dim lastRow As Long, i As Long Dim cel As Range Dim myTest As String lastRow = Cells(Rows.Count, 1).End(xlUp).Row For i = lastRow To 1 Step -1 Set cel = Cells(i, 1) mytext = Mid(cel, InStrRev(cel, "\") + 1, 256) & ":" On Error Resume Next If cel.Value <> cel.Offset(-1, 0).Value Or cel.Row = 1 Then cel.EntireRow.Insert cel.Offset(-1, 0).Value = mytext colorHeaderRow cel.Offset(-1, 0) ' Double header row height cel.Offset(-1, 0).RowHeight = cel.Offset(-1, 0).RowHeight * 2 End If On Error GoTo 0 Next i Application.ScreenUpdating = True End Sub Private Sub colorHeaderRow(ByVal cel As Range) With cel.EntireRow.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .PatternTintAndShade = 0 End With With cel.EntireRow.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With End Sub 

注意:如果有人有任何想法如何避免使用On Error Resume Next (不使代码长得多),我将不胜感激。 我只用它,因为在第1行, cel.offset(-1,0).Value引发(预期的)错误,并没有看看语句的其余部分。 我使用了Resume Next所以它会忽略,并看到cel.Row = 1并添加最后一行。 我只是钻到我的脑海,以避免这样的error handling…但代码不应该抛出任何其他错误。