我试图通过查看电子表格中上下的行来识别行的批次,有时超过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
发布于 2014-06-17 19:51:12
如果我没有弄错,那么您可以使用一个公式来完成此操作:假设数据一直到第100行(要调整),将以下内容放在列C中,例如:
=SUMPRODUCT(($A$2:$A$100=A2)*($B$2:$B$100="bint"))
这将把1
放在C A=x中的所有行中,如果有任何行,其中A=x和B= "bint“。
发布于 2014-06-17 20:36:10
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
我相信这就是你想要实现的。
发布于 2014-06-18 16:20:42
当我在每个新的策略批次之间插入一个空行时,这就成功了
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
https://stackoverflow.com/questions/24271446
复制相似问题