[英]Excel: Autonumber cells based on adjacent cell value in a continuous way
[英]Excel Do while to obtain adjacent cells when cell equals value
我有两张。 工作表1(客户跟踪程序-OC)的一列中,每一行都包含“是”或“否”。 如果值为yes,则右边两个相邻的单元格中都有两个值。
我想为在工作表sheet1的yes / no列中的每个单元格中循环的每个宏创建一个do while /,其中值是yes,在空白工作表2中创建一个新行,其中工作表1中的两个相邻值。
即
工作表1
A B C
1 YES 4 6
2 NO
3 YES 91 42
工作表2中的预期结果(“合同”)
A B
1 4 6
2 91 42
我有以下代码,但是它出现“溢出”错误。
Sub ForEach_Loop()
Dim TrackerLastRow As Integer
Dim TrackerCurrentRow As Integer
Dim ContractLastRow As Integer
Dim ContractCurrentRow As Integer
TrackerLastRow = Worksheets("Customer Tracker - OC").Range("T1").End(xlDown).Row
TrackerCurrentRow = 1
ContractLastRow = Worksheets("Contracts").Range("A1").End(xlDown).Row
ContractCurrentRow = 1
Do While TrackerCurrentRow <= TrackerLastRow
If Worksheets("Customer Tracker - OC").Range("T" & TrackerCurrentRow).Value = "Yes" Then
Worksheets("Contracts").Range("A" & ContractCurrentRow) = Worksheets("Customer Tracker - OC").Range("T" & TrackerCurrentRow).Offset(, 1).Value
Worksheets("Contracts").Range("B" & ContractCurrentRow) = Worksheets("Customer Tracker - OC").Range("T" & TrackerCurrentRow).Offset(, 2).Value
TrackerLastRow = TrackerLastRow + 1
TrackerCurrentRow = TrackerCurrentRow + 1
ContractLastRow = ContractLastRow + 1
ContractCurrentRow = ContractCurrentRow + 1
End If
TrackerCurrentRow = TrackerCurrentRow + 1
ContractCurrentRow = ContractCurrentRow + 1
Loop
End Sub
任何帮助,将不胜感激
似乎您过度增加了var,并过度扩展了整数类型var的功能限制。
Option Explicit
Sub ForEach_Loop()
Dim TrackerLastRow As Long, TrackerCurrentRow As Long
Dim ContractLastRow As Long, ContractCurrentRow As Long
With Worksheets("Contracts")
ContractLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
ContractCurrentRow = 1
End With
With Worksheets("Customer Tracker - OC")
TrackerLastRow = .Cells(.Rows.Count, "T").End(xlUp).Row
TrackerCurrentRow = 1
Do While TrackerCurrentRow <= TrackerLastRow
If .Cells(TrackerCurrentRow, "T").Value = "Yes" Then
Worksheets("Contracts").Range("A" & ContractCurrentRow) = .Range("T" & TrackerCurrentRow).Offset(0, 1).Value
Worksheets("Contracts").Range("B" & ContractCurrentRow) = .Range("T" & TrackerCurrentRow).Offset(0, 2).Value
ContractCurrentRow = ContractCurrentRow + 1
End If
TrackerCurrentRow = TrackerCurrentRow + 1
Loop
End With
End Sub
我设法解决了这个问题,我确实更改为整数并删除了一些不必要的增量。 认为我起初有点困惑。 谢谢您的帮助!
Sub ForEach_Loop()
Dim TrackerLastRow As Long
Dim TrackerCurrentRow As Long
Dim ContractLastRow As Long
Dim ContractCurrentRow As Long
TrackerLastRow = 2486
TrackerCurrentRow = 3
ContractCurrentRow = 1
Do While TrackerCurrentRow <= TrackerLastRow
If Worksheets("Customer Tracker - OC").Range("T" & TrackerCurrentRow).Value = "Yes" Then
Worksheets("Contracts").Range("A" & ContractCurrentRow) = Worksheets("Customer Tracker - OC").Range("T" & TrackerCurrentRow).Offset(, 1).Value
Worksheets("Contracts").Range("B" & ContractCurrentRow) = Worksheets("Customer Tracker - OC").Range("T" & TrackerCurrentRow).Offset(, 2).Value
TrackerCurrentRow = TrackerCurrentRow + 1
ContractCurrentRow = ContractCurrentRow + 1
Else
TrackerCurrentRow = TrackerCurrentRow + 1
End If
Loop
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.