如何在Excel中用同行最后一列的值替换指定区域的D+数字值?
实现工作表中D+数字替换为所在行最后一列值的方法
Excel 解决方案(VBA宏)
普通查找替换无法动态引用行内其他单元格内容,用VBA可实现逐单元格判断替换:
- 按
Alt+F11打开VBA编辑器 - 点击「插入」→「模块」,粘贴以下代码:
Sub ReplaceDWithLastColumnValue() Dim rng As Range, cell As Range Dim lastCol As Integer, targetRow As Integer Set rng = Application.InputBox("请选择要处理的单元格区域", Type:=8) For Each cell In rng If cell.Value Like "D#*" Then targetRow = cell.Row lastCol = Cells(targetRow, Columns.Count).End(xlToLeft).Column cell.Value = Cells(targetRow, lastCol).Value End If Next cell End Sub
- 运行宏,按提示选择需要处理的区域,完成替换
Google Sheets 解决方案(Apps Script)
- 打开目标工作表,点击「扩展程序」→「Apps 脚本」
- 清空默认代码,粘贴以下脚本:
function replaceDWithLastColumnValue() { const sheet = SpreadsheetApp.getActiveSheet(); const range = sheet.getActiveRange(); const values = range.getValues(); const startRow = range.getRowIndex(); for (let i = 0; i < values.length; i++) { for (let j = 0; j < values[i].length; j++) { const cellVal = values[i][j]; if (/^D\d+$/.test(cellVal)) { const targetRow = startRow + i; const lastColVal = sheet.getRange(targetRow, sheet.getLastColumn()).getValue(); range.getCell(i+1, j+1).setValue(lastColVal); } } } }
- 保存脚本,点击运行按钮,完成授权后即可替换选中区域内的目标内容
补充说明
普通查找替换仅支持静态值替换,无法关联当前行的最后一列动态内容,因此必须通过脚本/VBA实现逐行判断和值引用。
内容的提问来源于stack exchange,提问作者user3155581
相关产品推荐
相关产品推荐

