2015-10-20 70 views
0

如果一行包含值“car”,我试图将ID单元的内容复制到A1。如果行包含指定的值,则将ID复制到第一列

例如,如果行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 

所以目前的代码中找到的有“汽车”,但与价值“测试”填充单元格的行。我正在努力如何引用/复制单元格。

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

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

+5

将单词“test”更改为“cell.Offset(0,-2).Value”。你需要告诉代码你想要A是什么。现在它被告知“测试”。 –

回答

1

将“test”插入列A的原因是,代码指定的是这个。代码需要改变以反映所需的内容。

如果列B的内容被通缉,然后替换字符串“测试”有:

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个单元格。

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 
+0

首先你告诉我回答,然后窃取我的雷霆。我以为我们是朋友:P –

相关问题