Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 Excel 2010:需要根据单元格值将某些单元格复制到不同的工作表中_Vba_Excel - Fatal编程技术网

Vba Excel 2010:需要根据单元格值将某些单元格复制到不同的工作表中

Vba Excel 2010:需要根据单元格值将某些单元格复制到不同的工作表中,vba,excel,Vba,Excel,我在Excel 2010中有一个电子表格,当某个值输入到同一行的特定单元格中时,我希望获取行中的某些单元格,并将它们复制到另一个工作表中 例如:在工作表A中的单元格A2中,如果输入了“X”,我希望将单元格A5、A7和A13-17复制到工作表B中。在工作表B中,应将它们复制到下一个可用行,但我需要将它们复制到特定的单元格中(与工作表A中的不同-即:单元格A5需要复制到工作表B中的单元格2;单元格A7需要复制到单元格4,单元格A13-17需要复制到工作表B中的单元格10-14)。此外,还需要在新行中

我在Excel 2010中有一个电子表格,当某个值输入到同一行的特定单元格中时,我希望获取行中的某些单元格,并将它们复制到另一个工作表中

例如:在工作表A中的单元格A2中,如果输入了“X”,我希望将单元格A5、A7和A13-17复制到工作表B中。在工作表B中,应将它们复制到下一个可用行,但我需要将它们复制到特定的单元格中(与工作表A中的不同-即:单元格A5需要复制到工作表B中的单元格2;单元格A7需要复制到单元格4,单元格A13-17需要复制到工作表B中的单元格10-14)。此外,还需要在新行中创建这些单元格

我有一些VBA做类似的事情;但是,它复制了整行。对于上面的内容,我只需要特定的单元格,它们与工作表B中的相同单元格不匹配

以下是我能够完成的工作(复制整行):

我尝试使用以下内容而不是整个行部分,但不起作用

Target.Range("A13").Copy Destination:=Sheets("TEST").Range("A5 & nxtRw")
Target.Range("B13").Copy Destination:=Sheets("TEST").Range("C5 & nxtRw")
Target.Range("I13:J13").Copy Destination:=Sheets("TEST").Range("E5 & nxtRw")

我非常感谢您的建议,因为我真的需要让它正常工作。如果有什么不清楚的地方,请告诉我。

我不确定您想要复制什么以及粘贴到哪里,但希望这能让您从正确的方向开始:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngCheck As Range
    Dim CheckCell As Range
    Dim lRow As Long

    Set rngCheck = Intersect(Me.Columns("T"), Target)

    If Not rngCheck Is Nothing Then
        For Each CheckCell In rngCheck.Cells
            If CheckCell.Value = "Y" Then
                With Sheets("TEST")
                    lRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
                    Me.Cells(CheckCell.Row, "A").Copy Destination:=.Cells(lRow, "A")
                    Me.Cells(CheckCell.Row, "C").Copy Destination:=.Cells(lRow, "B")
                    Me.Cells(CheckCell.Row, "I").Copy Destination:=.Cells(lRow, "E")
                    Me.Cells(CheckCell.Row, "J").Copy Destination:=.Cells(lRow, "F")
                End With
            End If
        Next CheckCell
    End If

End Sub
未经测试:

Sub tester(rng As Range)
Dim rwSrc As Range, rwDest As Range

    Set rwSrc = rng.Cells(1).EntireRow

    If UCase(rwSrc.Cells(2).Value) = "X" Then
        Set rwDest = ThisWorkbook.Sheets("B").Cells( _
            Rows.Count, "A").End(xlUp).Offset(1, 0).EntireRow

        rwSrc.Cells(5).Copy rwDest.Cells(2)
        rwSrc.Cells(7).Copy rwDest.Cells(4)
        rwSrc.Cells(13).Resize(1, 5).Copy rwDest.Cells(10)
    End If
End Sub
试试这个:

Target.Range("A13").Copy Destination:=Sheets("TEST").Range("A5" & nxtRw)
Target.Range("B13").Copy Destination:=Sheets("TEST").Range("C5" & nxtRw)
Target.Range("I13:J13").Copy Destination:=Sheets("TEST").Range("E5" & nxtRw)

tigeravatar-谢谢!这非常好用…我一直在用头敲击键盘,试图让它工作一段时间,但在其他网站上没有得到任何帮助。再次感谢!
Target.Range("A13").Copy Destination:=Sheets("TEST").Range("A5" & nxtRw)
Target.Range("B13").Copy Destination:=Sheets("TEST").Range("C5" & nxtRw)
Target.Range("I13:J13").Copy Destination:=Sheets("TEST").Range("E5" & nxtRw)