Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 若行包含指定的值,则将ID复制到第一列_Vba_Excel_For Loop - Fatal编程技术网

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

Vba 若行包含指定的值,则将ID复制到第一列,vba,excel,for-loop,Vba,Excel,For Loop,如果一行包含值“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")

如果一行包含值“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
Dim lastRow尽可能长
暗淡单元格作为范围
lastRow=范围(“A”&行数)。结束(xlUp)。行数+1
对于范围内的每个单元格(“D2:D”和lastRow)
如果仪表(1,单元值,“CAR”)为0,则
单元格偏移量(0,-3).Value=“测试”
如果结束
下一个
因此,当前代码查找具有“car”的行,但使用值“test”填充单元格。我正在努力学习如何在上面引用/复制单元格

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

谢谢你的建议/帮助

在A列中插入“test”的原因是,这就是代码所指定的。代码需要更改以反映所需内容

如果需要B列的内容,则将字符串“test”替换为:

所以整行应该是:

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

由于您正在迭代D列,
单元格
位于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

将单词“test”更改为
单元格偏移量(0,-2).Value
。你需要告诉代码你想成为什么样的人。现在有人告诉我“测试”。你先让我回答,然后抢走我的风头。我以为我们是朋友:P
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