我正在尝试通过查看其上方和下方的行来识别电子表格中的批次行,有时超过20以上和以下。我将我的电子表格排序,以便将所有策略编号组合在一起,我想要的是一个宏,它将查看共享该策略编号的所有行,并查看行的范围是否包含至少一个行中的某个值另一栏。
因此,一列有政策编号,一个有风险ID。我希望突出显示批量匹配的策略编号(它们已按策略编号排序,因此已分组),如果批处理中的至少一行包含策略编号的相邻列中的值“BINT”。
这是我尝试过的。我在第一列PolicyNumbers中命名了策略编号的范围。宏将正确运行第一个值并输出RED(根据需要)到第三列,但之后它似乎进入某种无限循环然后excel崩溃。我无法弄清楚为什么
Sub fixit()
Dim rcell As Range
Dim counter As Integer
For Each rcell In Range("PolicyNumber")
Do Until rcell <> Range("A" & rcell.Row + 1)
rowset = rcell.Row + 1
If Range("Q" & rcell.Row) = Range("Q" & rowset) Then
Range("R" & rowset) = "RED"
Else
Range("R" & rowset) = "GREEN"
End If
Loop
Next rcell
End Sub
答案 0 :(得分:0)
如果我已经做到了这一点,那么你可以用公式做到这一点: 假设数据达到第100行(待调整),请将其放在C列中,例如:
=SUMPRODUCT(($A$2:$A$100=A2)*($B$2:$B$100="bint"))
如果任何行,其中A = x且B =“bint”,则会将1
放入C中的所有行,其中A = x。
答案 1 :(得分:0)
Sub test()
Dim PNR As Integer
Dim RowN As Integer
PNR = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row
RowN = 2
For Each Cell In Range("A2:A" & PNR)
If Cells(RowN, 1) = Cells(RowN + 1, 1) Or Cells(RowN, 1) = Cells(RowN - 1, 1) Then
Cells(RowN, 2).Value = "Green"
Else
Cells(RowN, 2).Value = "Red"
End If
RowN = RowN + 1
Next Cell
End Sub
我相信这正是你想要实现的目标。
答案 2 :(得分:0)
当我在每个新的策略批次
之间插入一个空行时,这成功了 Sub test()
Dim PNR As Long
Dim RowN As Long
Dim str As String
Dim str1 As String
str1 = "Green"
str = "BINT"
PNR = Worksheets("Page1_1").Cells(Rows.Count, 1).End(xlUp).Row
RowN = 2
For Each Cell In Range("A2:A" & PNR)
If Cells(RowN, 1) = Cells(RowN + 1, 1) Or Cells(RowN, 1) = Cells(RowN - 1, 1) Then
If Cells(RowN, 17).Value = str Or Cells(RowN - 1, 18).Value = str1 Then
Cells(RowN, 18).Value = "Green"
Else
Cells(RowN, 18).Value = "Red"
End If
End If
RowN = RowN + 1
Next Cell
End Sub