如果一行包含值“car”,我试图将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
所以目前代码中找到的行是“car”,但是使用值“test”填充单元格。我正在努力研究如何引用/复制单元格。
这是因为我的工作表的第一列需要将值连接为ID,我不想将其应用于此字符串。
感谢您的任何建议/帮助!
答案 0 :(得分:1)
插入到A列中的“test”的原因是代码所指定的内容。需要更改代码以反映需要的内容。
如果需要B列的内容,则将字符串“test”替换为:
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个单元格。 / p>
答案 1 :(得分:1)
另一种快速方法是使用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