【发布时间】:2022-08-17 01:28:15
【问题描述】:
我有一个包含 1-8 列、第 3 行到最后一行的工作表。我想遍历每个单元格以找出是否存在值 1。如果是,则为每个值 1 复制并插入该行,此外,该新行将在单元格 (13,row) 中插入一个文本,然后移动到下一行。这是据我所知....谢谢!
Sub Workcenter()
Application.ScreenUpdating = False
On Error Resume Next
Application.DisplayAlerts = False
On Error GoTo 0
Dim Test As Worksheet
Set TS = Worksheets(\"Test\")
Application.DisplayAlerts = True
For k = 1 To 8
For j = 4 To TS.Cells(Rows.Count, k).End(xlUp).Row
If TS.Cells(j, k).Value = 1 Then TS.Cells.Activate
\'TS.Cells.Activate.Row.Select
Rows(ActiveCell.Row).Select
Selection.Copy
Selection.Insert Shift:=xlDown
\'ShopOrderNumRow = j
Next j
Next k
End Sub
-
我对发生的事情感到有点困惑......插入了什么以及在哪里?如果您正在插入,那么您将移动单元格的位置,这会导致您的循环出现问题。
-
另外,为什么要在行的每个单元格中检查
1的值,而不是只使用Find()来确定是否需要更新cells(row,13).value? -
我正在扫描一系列行和列 1-8,每个可能包含 1 或没有,其中 1 表示操作已安排。目的是复制父行并将该信息传递到“1”出现的次数之下。我想从上到下到最后一行。之后,我开始用其他数据填充该行。
-
所以你想
countif(val,1)并插入那么多次?你会想为此做一个反向战利品(step -1),因为如果你要从头到尾,每个插入都会调整你的行号(假设for rowNum = lastRow to firstRow)。 -
西里尔,是的,自下而上可能是一个不错的选择。我想插入复制行的次数与该范围内该行中存在 (1) 的次数一样多。
标签: excel vba loops if-statement