如何仅复制特定单元格

时间:2017-10-05 22:45:02

标签: excel-vba vba excel

我测试了一个小脚本,它查找字符串'MISSING'并将数据复制/粘贴到另一张表。

Dim c As Range
Dim j As Integer
Dim Source As Worksheet
Dim Target As Worksheet
Dim sht As Worksheet
Dim LastRow As Long

Set sht = ThisWorkbook.Worksheets("Impact Analysis")
LastRow = sht.Cells(sht.Rows.count, "A").End(xlUp).Row
Set Source = ActiveWorkbook.Worksheets("Impact Analysis")
Set Target = ActiveWorkbook.Worksheets("MISSING")

    j = 11     ' Start copying to row 11 in target sheet
    For Each c In Source.Range("O11:O" & LastRow)
        If c = "MISSING" Then
           Source.Rows(c.Row).Copy Target.Rows(j)
           j = j + 1
        End If
    Next c

然而,我不是要复制整行,而是按照以下顺序复制以下列,具有相同的相应行:J,F,E,A和I.因此,来自“影响分析”如果列O具有单词'MISSING',我想复制J,F,E,A和I以及列O中的数据,并将所有这些粘贴到名为'MISSING'的表中。如何修改代码来做到这一点?

1 个答案:

答案 0 :(得分:1)

使用您当前的代码,您可以尝试以下内容:

For Each c In Source.Range("O11:O" & LastRow)
    If UCase(c.Value2) = "MISSING" Then ' non case sensitive search
        c.Offset(, -5).Copy Target.Range("A" & j) 'copy J
        c.Offset(, -9).Copy Target.Range("B" & j) 'copy F
        c.Offset(, -10).Copy Target.Range("C" & j) 'copy E
        c.Offset(, -14).Copy Target.Range("D" & j) 'copy A
        c.Offset(, -6).Copy Target.Range("E" & j) 'copy I
        c.Copy Target.Range("F" & j) 'copy O

        j = j + 1
    End If
Next

上面按您指定的顺序从列复制值,并将其放在目标工作表的A到F列上。