如果行包含指定的值,则将ID复制到第一列

如果一行包含值“车”我试图将ID单元格的内容复制到A1。

例如,如果行D12包含“car”,我想将单元格B12的内容复制到A12。

目前这是我的代码:

Dim lastRow As Long Dim cell As Range lastRow = Range("A" & Rows.Count).End(xlUp).Row + 1 For Each cell In Range("D2:D" & lastRow) If InStr(1, cell.Value, "CAR") <> 0 Then cell.Offset(0, -3).Value = "test" End If Next 

所以目前的代码find的行有“汽车”,但填充单元格的值“testing”。 我正在努力如何引用/复制单元格。

这是因为我的工作表的第一列需要连接值作为ID,我不想将其应用于此string。

感谢您的任何build议/帮助!

你插入A列的原因就是代码所指定的。 代码需要改变,以反映想要的。

如果需要列B的内容,则将string“test”replace为:

 cell.Offset(0, -2).Value 

所以整个行会写成:

 cell.Offset(0, -3).Value = cell.Offset(0, -2).Value 

由于您正在迭代D列,所以cell位于列D中。偏移量部分是说:“从列D移动三个位置,并将两列中的值放在上面”。 或者在同一行上的列A,它是D列中当前单元格左边的3个单元格,并将列B中的值放在同一行上,即D列中当前单元格左边的2个单元格。

另一个快速的方法是使用autifilter。 例如:

 Sub Button1_Click() Dim lastRow As Long Dim rng1 As Range, rng2 As Range Application.ScreenUpdating = 0 lastRow = Range("D" & Rows.Count).End(xlUp).Row + 1 Columns("D:D").AutoFilter Field:=1, Criteria1:="=*Car*" Set rng1 = Range("A2:A" & lastRow).SpecialCells(xlCellTypeVisible) Set rng2 = Range("B2:B" & lastRow).SpecialCells(xlCellTypeVisible) rng1.Value = rng2.Value ActiveSheet.AutoFilterMode = 0 End Sub