VBA宏以查找单元格中的值是否在两个单元格的值范围内
我有两张床单。表1有3列A、B和C,其值为范围开始编号(A)、范围结束编号(B)和范围名称(C) 表2有1列A和编号列表 如何查找表2中的哪些数字属于表1中的哪些范围?此外,数字的位置也在相应的范围内。输出应为: “范围名称”-“范围中的位置” 数据输入(表1和表2)和预期输出(表2中)示例见下文VBA宏以查找单元格中的值是否在两个单元格的值范围内,vba,excel,macros,Vba,Excel,Macros,我有两张床单。表1有3列A、B和C,其值为范围开始编号(A)、范围结束编号(B)和范围名称(C) 表2有1列A和编号列表 如何查找表2中的哪些数字属于表1中的哪些范围?此外,数字的位置也在相应的范围内。输出应为: “范围名称”-“范围中的位置” 数据输入(表1和表2)和预期输出(表2中)示例见下文 数值在范围内的位置通过从输入值中减去范围数值中较小的数值来计算 Sub RangeSub() Row = 1 Do While True Column = 6 If Not I
数值在范围内的位置通过从输入值中减去范围数值中较小的数值来计算
Sub RangeSub()
Row = 1
Do While True
Column = 6
If Not IsEmpty(Cells(Row, 5)) Then
rRow = 1
Do While True
If Not IsEmpty(Cells(rRow, 1)) And Not IsEmpty(Cells(rRow, 2)) And Not IsEmpty(Cells(rRow, 3)) Then
If (Cells(rRow, 1).Value <= Cells(Row, 5).Value And Cells(Row, 5).Value <= Cells(rRow, 2).Value) Or (Cells(rRow, 1).Value >= Cells(Row, 5).Value And Cells(Row, 5).Value >= Cells(rRow, 2).Value) Then
Position = Abs(Cells(Row, 5) - Cells(rRow, 1)) + 1
Cells(Row, Column).Value = Cells(rRow, 3).Value + "-" + Str(Position)
Column = Column + 1
End If
Else
Exit Do
End If
rRow = rRow + 1
Loop
Row = Row + 1
Else
Exit Do
End If
Loop
End Sub
D为空。您好,欢迎来到StackOverflow。请花些时间阅读帮助页面,特别是命名和的部分。更重要的是,请阅读。您可能还想了解。并包含您试图通过的代码…以便人们能够提供帮助。为什么10属于rangeI-6两次?-6是什么意思?我已经编辑了这个问题。那是个错误。谢谢。谢谢。成功了。除了一个数字在一个范围内的“位置”总是从范围开始。如果'range\u start'>='number',则abs(range\u start-number)+1,否则(number-range\u-start)+1end@user3531676编辑代码使操作如此,删除最小函数,并将使操作的行更改为仅
Position=Abs(单元格(第5行)-单元格(箭头,1))+1
如果这解决了您的答案,请接受。一切正常。只是代码第10行中的一个小问题。“位置”重复出现。我已经修好了。
Sub RangeSub()
Row = 1
Do While True
Column = 6
If Not IsEmpty(Cells(Row, 5)) Then
rRow = 1
Do While True
If Not IsEmpty(Cells(rRow, 1)) And Not IsEmpty(Cells(rRow, 2)) And Not IsEmpty(Cells(rRow, 3)) Then
If (Cells(rRow, 1).Value <= Cells(Row, 5).Value And Cells(Row, 5).Value <= Cells(rRow, 2).Value) Or (Cells(rRow, 1).Value >= Cells(Row, 5).Value And Cells(Row, 5).Value >= Cells(rRow, 2).Value) Then
Position = Abs(Cells(Row, 5) - Cells(rRow, 1)) + 1
Cells(Row, Column).Value = Cells(rRow, 3).Value + "-" + Str(Position)
Column = Column + 1
End If
Else
Exit Do
End If
rRow = rRow + 1
Loop
Row = Row + 1
Else
Exit Do
End If
Loop
End Sub
A B C D E
10 17 rangeA 10
17 15 rangeB 11
30 12 rangeC 12
8 9 rangeD 13
11 9 rangeE 14
36 50 rangeF 15
40 45 rangeG 16
31 32 rangeH 17
5 25 rangeI 18
25 26 rangeJ 19
22
23
24
25