在Excel中匹配指定值并更新同行对应单元格内容
VBA代码修改:用指定单元格值查找并更新日期
以下是修改后的完整代码,直接使用「Billing actions!A2」的值作为查找条件,并完成对应行的日期更新:
Sub UpdateMasterEntryDate() Dim searchValue As Variant Dim found As Range Dim masterSheet As Worksheet Dim billingSheet As Worksheet ' 定义工作表对象,简化重复引用 Set masterSheet = ThisWorkbook.Sheets("Master entries") Set billingSheet = ThisWorkbook.Sheets("Billing actions") ' 获取Billing actions!A2的查找值 searchValue = billingSheet.Range("A2").Value ' 检查查找值是否为空,避免无效查找 If IsEmpty(searchValue) Then MsgBox "Billing actions!A2单元格为空,请输入值后重试" Exit Sub End If ' 在Master entries的D列精确匹配查找值 Set found = masterSheet.Columns("D").Find( _ What:=searchValue, _ LookIn:=xlValues, _ LookAt:=xlWhole, _ MatchCase:=False) ' 可根据需求开启/关闭大小写匹配 If found Is Nothing Then MsgBox "未找到匹配的记录" Else ' 更新对应行的I列为当前日期,格式设为dd/mm/yyyy masterSheet.Cells(found.Row, "I").Value = Date masterSheet.Cells(found.Row, "I").NumberFormat = "dd/mm/yyyy" ' 后续要改为K列的话,替换上面两行的"I"为"K"即可: ' masterSheet.Cells(found.Row, "K").Value = Date ' masterSheet.Cells(found.Row, "K").NumberFormat = "dd/mm/yyyy" MsgBox "已更新第" & found.Row & "行的日期" End If End Sub
关键改动说明
- 替换查找来源:把原代码的
InputBox直接替换为billingSheet.Range("A2").Value,无需手动输入,自动读取指定单元格的值 - 增加空值校验:避免因A2单元格为空导致的无意义查找
- 添加日期更新逻辑:找到匹配行后,用
Date函数获取当前系统日期,同时设置单元格格式为dd/mm/yyyy - 灵活调整更新列:注释中明确标注了修改更新列的方法,只需替换列标识即可
- 工作表对象化:通过定义工作表变量,让代码结构更清晰,后续修改工作表名称时只需改动一处
内容的提问来源于stack exchange,提问作者Dan Rose
相关产品推荐
相关产品推荐

