【问题标题】:VBA copying data from one workbook to specific cells in another, based on criteriaVBA根据标准将数据从一个工作簿复制到另一个工作簿中的特定单元格
【发布时间】:2017-04-13 16:15:10
【问题描述】:

我有 2 个工作簿,需要将第 26 列中为“是”的行中的数据复制到目标工作簿中的特定单元格。 我目前在源表上的按钮上附加了以下代码:

Sub exportData()

Dim LastRow As Integer 
Dim i As Integer
Dim erow As Integer

LastRow = ActiveSheet.Range("A" & rows.Count).End(xlUp).Row

For i = 2 To LastRow

If Cells(i, 26).Value = "Yes" Then


    Range(Cells(i, 1), Cells(i, 26)).Select
     Selection.Copy

    Workbooks.Open Filename:=ThisWorkbook.Path & "\GI New Starter Tracker 2017edit.xlsx"
    Worksheets("Main").Select
    erow = ActiveSheet.Cells(rows.Count, 1).End(xlUp).Offset(1, 0).Row

    ActiveSheet.Cells(erow, 1).Select

    ActiveSheet.Paste
    'ActiveSheet.Range("$A$1:$AB$3000").RemoveDuplicates Columns:=2, Header:=xlYes
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Application.CutCopyMode = False


End If
Next i
End Sub

代码工作正常,但是它复制了整行,但我只需要复制某些信息,例如“名字”、“姓氏”、“出生日期”。目标工作簿没有完全相同的标题,所以我需要能够指定哪一列。

我一直在拔头发,非常感谢任何帮助。

谢谢:)

【问题讨论】:

  • 这可以通过 excel 公式轻松完成,但前提是您需要

标签: excel vba


【解决方案1】:

应该这样做。您需要将列号更改为工作簿中的相应列....

Sub exportData()

    Dim LastRow As Integer
    Dim i As Integer
    Dim erow As Integer
    Dim wbk As Workbook
    Dim SourceSheet As Worksheet
    Dim DestSheet As Worksheet
    Dim firstName, surName, DoB

    Set SourceSheet = ActiveSheet
    LastRow = SourceSheet.Range("A" & Rows.Count).End(xlUp).Row
    Set wbk = Workbooks.Open(ThisWorkbook.Path & "\GI New Starter Tracker 2017edit.xlsx")
    Set DestSheet = wbk.Sheets("Main")

    For i = 2 To LastRow
        If SourceSheet.Cells(i, 26).Value = "Yes" Then
            'change the column numbers to the relevant number
            firstName = SourceSheet.Cells(i, 23).Value
            surName = SourceSheet.Cells(i, 24).Value
            DoB = SourceSheet.Cells(i, 25).Value

            erow = DestSheet.Cells(DestSheet.Rows.Count, 1).End(xlUp).Offset(1, 0).Row

            'change the column numbers to the relevant number
            DestSheet.Cells(erow, 10).Value = firstName
            DestSheet.Cells(erow, 11).Value = surName
            DestSheet.Cells(erow, 12).Value = DoB
        End If
    Next i

    wbk.Save
    wbk.Close
End Sub

【讨论】:

  • 您先生是个传奇人物!非常感激。我必须确保在目标工作表的 A 列中写入了某种数据才能使其正常工作,但它的工作原理就像做梦一样。
猜你喜欢
  • 2020-11-11
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多