Excel 根据单元格值复制到特定工作表

Posted

技术标签:

【中文标题】Excel 根据单元格值复制到特定工作表【英文标题】:Excel copy to specific sheet depending on cell value 【发布时间】:2017-05-05 12:03:18 【问题描述】:

我目前正在尝试将前页中的文本复制到变体页中。

我想要的是将单元格 J19、J20、J21 复制到不同工作表的单元格 A1、B1、C1 中。 J19 决定复制到哪个工作表,因为每个 agent 都有自己的工作表,其中有一个宏将代理名称拉入到 J19 上的数据验证中。

J19 = 特工姓名

J20 = 假期开始日期

J21 = 假期结束日期

如何更改Set wsDestin = Sheets("Agent1"),使其查看 J19 来决定目标单元格。

Sub CopyColumnP()
    Dim wsSource As Worksheet
    Dim wsDestin As Worksheet
    Dim lngDestinRow As Long
    Dim rngSource As Range
    Dim rngCel As Range

    Set wsSource = Sheets("Front")
    Set wsDestin = Sheets("Agent1")

    With wsSource

        Set rngSource = .Range(.Cells(19, "J"), .Cells(.Rows.Count, "J").End(xlUp))
    End With

    For Each rngCel In rngSource
        If rngCel.Value = "Design" Then
            With wsDestin
                lngDestinRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
                rngCel.EntireRow.Copy Destination:=wsDestin.Cells(lngDestinRow, "A")
            End With
        End If
    Next rngCel
    End Sub

【问题讨论】:

Cells("J19").Value 真的那么简单吗?我认为这会更复杂@Luuklag 【参考方案1】:

这很简单:

Set wsDestin = ThisWorkbook.Worksheets(wsSource.Range("J19").Value)

要检查工作表是否存在结束防止错误使用:

On Error Resume Next
    Set wsDestin = ThisWorkbook.Worksheets(wsSource.Range("J19").Value)
    If Not Err.Number = 0 Then 
        MsgBox "Sheet '" & wsSource.Range("A1").Value & "' not found."
        Exit Sub
    End If
On Error GoTo 0

或者,如果 J19 不包含目标工作表名称,但您需要根据 J19 的值选择工作表,则使用:

Select Case wsSource.Range("J19").Value
    Case "AAA" 'if value of J19 is AAA select sheet A
        Set wsDestin = Sheets("A")

    Case "B", "C" 'if value of J19 is B or C select sheet BC
        Set wsDestin = Sheets("BC")

    Case Else
        MsgBox "no corresponding worksheet found."
End Select

【讨论】:

如果我是正确的那将替换J19 的内容?我希望代码查看J19 来决定将哪个工作表从J19,J20,21 复制并粘贴到J19 中工作表名称的A1,A2,A3 等号左边将得到等号右边的值。您可能希望在此处明确引用工作簿。 @JackBrownridge 如果 J19 不包含目标工作表名称,但您需要根据 J19 的值选择工作表,请使用我答案的第二部分。 @Peh yes J19 包含目标工作表名称,因为工作表被拉入该单元格的数据验证中。 @JackBrownridge 如果您收到错误 9,则名为 J19 中的值的工作表不存在

以上是关于Excel 根据单元格值复制到特定工作表的主要内容,如果未能解决你的问题,请参考以下文章

根据行数据复制特定单元格并粘贴到特定工作表上

Excel VBA根据条件从一个工作表复制到其他工作表特定单元格

如何在 MS Excel 中将特定数据从一个 Excel 工作表传输到另一个工作表?

将单元格颜色从工作表复制到具有相同单元格值的工作表

在 Excel 中将某些特定单元格从一个工作表复制到另一个工作表的 VBA 可能是啥?

使用 Python(和 DataNitro)将单元格从一个 Excel 工作簿中的特定工作表复制到另一个 Excel 工作簿中的特定工作表