EXCEL 多列同时满足条件求最大跨度和最大行号

来源:百度知道 编辑:UC知道 时间:2024/05/25 06:26:39
excel 几个列同时满足条件求最大跨度
A 列 B列 C列
1 2 3
2 2 2
4 5 6
.....
.......
求A列是2或0 且 B列是2或1 且 C列是3或7,也即是ABC列组合是其中:223 227 213 217 023 027 013 017的一种即满足条件,那么最大跨度和最大行号值

最大跨度不是指最后个满足条件的行和最小的之差,指所以满足条件的行之间差最大的那个值

已经帮你调试出一段VBA代码,复制以下文字(本段不要),打开EXCEL,右键工作表标签,查看代码,粘贴。双击excel任意单元格即可执行代码。

'求A列是2或0 且 B列是2或1 且 C列是3或7,也即是ABC列组合是其中:223 227 213 217 023 027 013 017的一种即满足条件,
'求最大跨度(差值最大的相邻两个满足条件的行号差)和最大行号值(最后一个满足条件的行)
'本段代码只判断ABC三列数,以空行为数据结束依据。双击任意单元格开始判断。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim a, b, c, R, R0, K, i

i = 1
R0 = 0
R = 0
K = 0

loop1:
a = Range("a" & i)
b = Range("b" & i)
c = Range("c" & i)

If (a = 2 Or a = 0) And (b = 2 Or b = 1) And (c = 3 Or c = 7) Then
'Range("a" & i).Interior.ColorIndex = 6
'删除上一行第一个 '号,可标记所有满足条件的行颜色。
If R0 = 0 Then R0 = i & R = i

If i - R > K Then
R0 = R
R = i
K = R - R0
Else
R0 = R
R = i
End If

End If

i = i + 1
If Range("a" & i) <> "" Then GoTo l