vba, 同一列里,从下开始往上找与该单元格值一样的最近的单元格所在行数
时间: 2023-09-14 15:07:14 浏览: 129
可以使用 VBA 的 for 循环来实现从下往上查找相同值的功能。以下是一个示例代码:
```
Function FindLastMatchRow(ByVal target As Range) As Long
Dim lastRow As Long
Dim i As Long
lastRow = target.Parent.Cells(target.Parent.Rows.Count, target.Column).End(xlUp).Row
For i = lastRow To target.Row Step -1
If target.Value = target.Parent.Cells(i, target.Column).Value Then
FindLastMatchRow = i
Exit Function
End If
Next i
FindLastMatchRow = -1 '未找到匹配行
End Function
```
在这个示例中,我们定义了一个名为 FindLastMatchRow 的函数,该函数接受一个 Range 类型的参数 target,表示要查找的单元格。我们首先获取该列的最后一行,然后从最后一行开始往上遍历,查找与目标单元格值相同的单元格。如果找到了相同值的单元格,则返回其行号;否则返回 -1。在 for 循环中,我们使用 Step -1 来表示从下往上遍历。
相关问题
vba, 同一列里,给单元格找到与其值一样最近的单元格所在行数, 从下往上的方向
可以使用VBA的Range.Find方法来实现这个需求。具体代码如下:
```vb
Sub FindNearestMatch()
Dim searchRange As Range
Dim searchValue As Variant
Dim resultCell As Range
'设置查找范围
Set searchRange = Range("A1:A10")
'设置要查找的值
searchValue = Range("A2").Value
'从下往上查找
Set resultCell = searchRange.Find(What:=searchValue, _
After:=searchRange.Cells(1, 1), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchDirection:=xlPrevious)
'判断是否找到匹配单元格
If Not resultCell Is Nothing Then
MsgBox "最近匹配的单元格在第 " & resultCell.Row & " 行。"
Else
MsgBox "未找到匹配单元格。"
End If
End Sub
```
以上代码中,首先设置了要查找的范围和要查找的值,然后使用Range.Find方法从下往上查找匹配单元格。最后根据是否找到匹配单元格来弹出相应的提示框。
vba, 同一列里,给单元格找到与其值一样最近的单元格所在行数, 从上往xia的方向
你可以使用以下代码实现:
```vb
Function findClosestMatchRow(rng As Range) As Integer
Dim targetValue As Variant
Dim minDiff As Double
Dim currDiff As Double
Dim matchRow As Integer
Dim currRow As Integer
targetValue = rng.Value
minDiff = 99999 ' set a large initial value for minDiff
For currRow = rng.Row - 1 To 1 Step -1 ' search upwards from the current row
currDiff = Abs(targetValue - Cells(currRow, rng.Column).Value)
If currDiff < minDiff Then ' found a closer match
minDiff = currDiff
matchRow = currRow
End If
Next currRow
findClosestMatchRow = matchRow ' return the row number of the closest match
End Function
```
将这段代码复制到你的 VBA 模块中后,你可以在 Excel 中使用类似于以下公式的方式调用该函数:
```
=findClosestMatchRow(A1)
```
其中,A1 是你要查找最近匹配行号的单元格。该函数将返回与该单元格值最接近的单元格所在的行号,从上往下数。
阅读全文