Excel中用VBA查找最后一个给定值的行号

本文提供了一个使用VBA宏在Excel中搜索特定值并获取其所在行号的示例代码。通过两种不同的方法展示了如何利用Range对象的Find方法进行搜索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近两天在想用VBA写个宏处理点东西,对Excel的对象模型和方法不是很熟悉,写起来还真费劲,在这里备份一下,便于以后查找。
ContractedBlock.gifExpandedBlockStart.gifCode
Sub test_Click()

    
Dim nameRange As Range, tmpRange As Range
    
Dim findAddress As String
    
Dim finalRow As Integer
    
    
Set namedRange = Range("TestClick")
    
    
    
'The first method
    Set tmpRange = namedRange.Find(What:="34534")
    
    findAddress 
= tmpRange.Address
    
    
If Not tmpRange Is Nothing Then
    
        
        
Do
            finalRow 
= tmpRange.Row
            
Set tmpRange = namedRange.FindNext(tmpRange)
            
            
'MsgBox tmpRange.Row
            
        
Loop While Not tmpRange Is Nothing And findAddress <> tmpRange.Address
        
    
End If
    
    
MsgBox finalRow
    
    
'the second Method
    Set tmpRange = namedRange.Find(What:="345345", After:=namedRange.Cells(1), LookIn:=xlValues, Lookat:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
    
    
MsgBox tmpRange.Row
    
End Sub

转载于:https://www.cnblogs.com/Farseer1215/archive/2009/08/17/1548052.html

### WPS VBA 替换最后一列字段 在 WPS 中使用 VBA 编写代码可以高效地完成批量替换操作。以下是用于替换表格最后一列字段的示例代码: ```vba Sub ReplaceLastColumn() Dim ws As Worksheet Set ws = ActiveSheet ' 获取当前活动的工作表 Dim lastCol As Long lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ' 查找最后一列 Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, lastCol).End(xlUp).Row ' 查找最后一行 Dim i As Long For i = 1 To lastRow If Not IsEmpty(ws.Cells(i, lastCol)) Then ws.Cells(i, lastCol).Value = "新" ' 将最后一列中的替换为“新” End If Next i End Sub ``` 此代码的功能如下: - 使用 `ws.Cells(1, ws.Columns.Count).End(xlToLeft)` 方法找到工作表的最后一列[^1]。 - 利用 `ws.Cells(ws.Rows.Count, lastCol).End(xlUp)` 定位到该列的最大行数。 - 循环遍历每一行,并将最后一列的内容替换为指定的新。 如果需要动态设置替换成的具体内容,可以通过变量传递或者输入框获取用户输入的数据[^3]。 例如,通过 `InputBox` 动态获取用户的替换: ```vba Sub DynamicReplaceLastColumn() Dim newValue As String newValue = InputBox("请输入要替换的最后一列的:", "替换") ' 用户输入新的 Dim ws As Worksheet Set ws = ActiveSheet Dim lastCol As Long lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, lastCol).End(xlUp).Row Dim i As Long For i = 1 To lastRow If Not IsEmpty(ws.Cells(i, lastCol)) Then ws.Cells(i, lastCol).Value = newValue ' 替换为用户输入的 End If Next i End Sub ``` 以上代码允许用户灵活定义替换的目标,增强了脚本的适用范围。 ### 注意事项 - 如果目标单元格为空,则不会进行任何修改。 - 此方法适用于单个工作表的操作;对于多工作表的情况,需进一步扩展循环逻辑以覆盖所有工作表[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值