VBA:复制一行,将其插入到上面,其中一个单元格的值已更改

VBA: Copying a row, inserting it above with one cell's value changed

我正在尝试找到一种方法来复制已识别行的值并将其插入到上方,除了一列外具有相同的值。如果可能的话,最好能找到一种方法来更改已识别行中的 2 个单元格。我在尝试使用 VBA 方面是全新的,所以我还没有走得太远......目前我可以插入一个空白行,但没有内容。希望能更清楚地说明,以下是我要完成的步骤。

  1. 在 C 列中,遍历每一行 identify/action 每行包含“ITEM1_ITEM2”
  2. 在包含所有相同值的标识行上方(或下方?)插入行,但 C 列除外,其值已更改为“ITEM2”,H 列的数值减半。
  3. 已识别的行的 C 列值更改为“ITEM1”,并且其 H 列值也减半。
  4. 转到下一个带有“ITEM1_ITEM2”的标识行并完成相同的操作。

如有任何帮助,我们将不胜感激。我什至不需要完成所有步骤...即使只是弄清楚如何 copy/paste 插入行中的单元格也会有所帮助。谢谢!

Public Sub sortICs()

    Dim bottom As Long, top As Long
    Dim row As Long
    
    With ActiveSheet
        top = 1
        bottom = .UsedRange.Rows(.UsedRange.Rows.Count).row
            
        For row = bottom To top Step -1
            If .Range("C" & row).Value = "ITEM1_ITEM2" Then
                .Range("C" & row).EntireRow.Insert
            End If
        Next row
    End With
    
End Sub

这可行:

Public Sub sortICs()

    Dim bottom As Long, top As Long
    Dim rw As Range, newRow As Range, x, i As Long
    
    With ActiveSheet.UsedRange
        For i = .Rows.Count To 2 Step -1  'work backwards so you don't interfere when inserting rows
            Set rw = .Rows(i)
            If rw.Columns("C").Value = "ITEM1_ITEM2" Then
                rw.Offset(1, 0).Insert
                Set newRow = rw.Offset(1, 0) 'the just-inserted row
                rw.Copy newRow
                
                rw.Columns("C").Value = "ITEM1"
                newRow.Columns("C").Value = "ITEM2"
                
                x = rw.Columns("H").Value / 2
                rw.Columns("H").Value = x
                newRow.Columns("H").Value = x
            End If
        Next i
    End With
    
End Sub