【问题标题】:Copy/paste cell data from selected cells in row从行中的选定单元格复制/粘贴单元格数据
【发布时间】:2019-05-30 00:00:00
【问题描述】:

我的工作要求我从一个 Excel 工作表的一行中的多个单元格中复制/粘贴数据到另一个 Excel 工作表中的特定单元格。

我创建了一个宏,但它只选择了我在录制宏时选择的特定单元格 - 这些单元格总是会根据我需要来自哪一行的数据而改变,因此录制的宏是无用的。此外,此信息将在另一个工作表上粘贴的位置将始终不同(宏复制录制时选择的相同确切数据并将其粘贴到录制时选择粘贴的相同位置)。我是 VBA 的菜鸟,所以我不确定如何做到这一点。

我基本上想指定一个特定的行来开始复制数据,并始终选择该特定行上的相同单元格,并将数据粘贴到我在目标工作表上选择的任何行上的特定单元格。有人可以帮忙吗?这是我的工作 - 任何帮助将不胜感激。理想情况下,我希望宏将选项卡切换到所需的特定单元格并从宏开始的任何行复制该信息 - 然后将该数据粘贴到通过在另一个工作表中选择的任何行上的选项卡上选择的单元格运行宏的时间,如果有意义的话。

【问题讨论】:

  • 您是否只是在每次运行宏时复制一行?
  • 是的 - 但我的问题是单元格总是会有所不同,因为宏的每次运行都会在不同的行上。与目标文件相同,每一行将位于不同的行,因此单元格将永远不会相同。这就是我卡住的地方,因为宏会记录我在录制时选择的特定单元格,因此它总是将相同的内容复制/粘贴到相同的位置。

标签: excel vba


【解决方案1】:

你可以这样做(未经测试):

Sub CopyOver()

    Dim rwSrc As Long, rwDest As Long
    Dim shtSrc As Worksheet, shtDest As Worksheet
    Dim p, arr

    'assume macro is run with the source workbook active
    Set shtSrc = ActiveSheet
    rwSrc = Selection(1).Row  '(1) = first selected cell only

    'switch to the "other" workbook and get the selection
    Workbooks("Joey's May FY19 Audit.xlsx").Activate
    Set shtDest = ActiveSheet
    rwDest = Selection(1).Row

    'Example [source:destination] pairs ColA>>ColB, B>>C, F>>H, etc
    For Each p In Array("A:B", "B:C", "F:H")
        arr = Split(p, ":")
        shtSrc.Cells(rwSrc, arr(0)).Copy shtDest.Cells(rwDest, arr(1))
    Next p

End Sub

【讨论】:

  • 您绝对是救生员,这正是我一直在寻找的,并且完美地满足了我的需求。我是这个网站的新手,所以我不确定是否有其他方式来表达感谢,但你是最好的,谢谢!!!!!!
【解决方案2】:

您需要想出一个内部逻辑,即复制哪些单元格以及将它们粘贴到哪里,完成此操作后,您可以调整以下代码以满足您的需求:

Sub Test2()

    'Define variables

    Dim wkCopy As Workbook
    Dim wkDest As Workbook

    Dim wsCopy As Worksheet
    Dim wsDest As Worksheet

    ' Change names as required
    Set wsCopy = Workbooks("Joey's May FY19 Audit.xlsm").Worksheets("Sheet1")
    Set wsDest = Workbooks("Master Files - May.xlsm").Worksheets("Sheet1")

    ' Copy a range from the source sheet and paste in the destination one
    wsCopy.Range("A1:A10").Copy wsDest.Range("B11")

End Sub

【讨论】:

  • 因此,您可以使用上面的代码来执行此操作 - 使用所需的输入和输出范围(单元格)多次重复 wsCopy.Range("A1:A10").Copy wsDest.Range("B11") 行。您也可以改用CELL 函数。
猜你喜欢
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多