VBA:复制一行,将其插入到上面,其中一个单元格的值已更改
VBA: Copying a row, inserting it above with one cell's value changed
我正在尝试找到一种方法来复制已识别行的值并将其插入到上方,除了一列外具有相同的值。如果可能的话,最好能找到一种方法来更改已识别行中的 2 个单元格。我在尝试使用 VBA 方面是全新的,所以我还没有走得太远......目前我可以插入一个空白行,但没有内容。希望能更清楚地说明,以下是我要完成的步骤。
- 在 C 列中,遍历每一行 identify/action 每行包含“ITEM1_ITEM2”
- 在包含所有相同值的标识行上方(或下方?)插入行,但 C 列除外,其值已更改为“ITEM2”,H 列的数值减半。
- 已识别的行的 C 列值更改为“ITEM1”,并且其 H 列值也减半。
- 转到下一个带有“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
我正在尝试找到一种方法来复制已识别行的值并将其插入到上方,除了一列外具有相同的值。如果可能的话,最好能找到一种方法来更改已识别行中的 2 个单元格。我在尝试使用 VBA 方面是全新的,所以我还没有走得太远......目前我可以插入一个空白行,但没有内容。希望能更清楚地说明,以下是我要完成的步骤。
- 在 C 列中,遍历每一行 identify/action 每行包含“ITEM1_ITEM2”
- 在包含所有相同值的标识行上方(或下方?)插入行,但 C 列除外,其值已更改为“ITEM2”,H 列的数值减半。
- 已识别的行的 C 列值更改为“ITEM1”,并且其 H 列值也减半。
- 转到下一个带有“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