excel - VBA:复制一行,将其插入到上面并更改一个单元格的值
问题描述
我正在尝试找到一种方法来复制已识别行的值并将其插入到上面,除了一列之外具有相同的值。如果可能的话,最好找到一种方法来更改已识别行中的 2 个单元格。我在尝试使用 VBA 方面是全新的,所以我还没有走得很远......目前我可以插入一个空白行,但没有内容。希望更清楚,这里是我试图完成的步骤。
- 在 C 列中,遍历每一行并识别/操作每个包含“ITEM1_ITEM2”的行
- 在包含所有相同值的已识别行的上方(或下方?)插入行,但 C 列的值更改为“ITEM2”,H 列的数值减半。
- 已识别行的 C 列值更改为“ITEM1”,H 列值也减半。
- 移动到带有“ITEM1_ITEM2”的下一个标识行并完成相同的操作。
任何帮助,将不胜感激。我什至不需要完成所有步骤......即使只是弄清楚如何复制/粘贴插入行中的单元格也会有所帮助。谢谢!
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
推荐阅读
- javascript - 如何延迟函数但不在Javascript中再次执行
- java - 带有空密钥管理器的 java sslcontext.init
- ruby - 如何在单个 ruby 脚本中写入和读取同一个命名管道?
- python - 从python中的不同模块调用函数
- python - 循环问题:尝试发送 form-url-encoded 数据导致 TypeError: can't concat bytes to str,并且对后者的修复会破坏前者
- python - Python Pandas 用上面的单元格替换包含字符串的单元格
- python - TensorFlow CuDNNLSTM keras 错误。TypeError:('关键字参数不理解:','time_major')
- python-3.x - 更改多个按钮的颜色
- javascript - 在 Typescript 中将函数参数定义为对象
- sql-server - Microsoft SQL Server:拆分数据和交叉连接 - 计数器表 - 卡住