首页 文章

根据条件复制和粘贴数据

提问于
浏览
0

我编写了一个宏代码来从一个工作表(Sheet2)复制数据并粘贴到另一个工作表(Sheet1) . 这很好用 . 但是,我想有一个条件来确定在Sheet1中粘贴数据的位置 . 条件是,如果在Sheet2中的单元格A1中选择(从下拉列表中),在Sheet1中的A列中找到(已复制数据),则使用最新数据更新(覆盖)该国家/地区数据,否则更新(覆盖)它应该将新数据粘贴到Sheet1上的最后一组数据下面 .

这是我到目前为止编写的代码:

Private Sub CommandButton1_Click()
ActiveSheet.Range("A1:F44").Copy
    With Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
        .PasteSpecial xlPasteFormats
    ActiveSheet.Range("A1:F44").Copy
    With Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
        .PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    Sheets("Sheet2").Activate
End With
End With
End Sub

任何帮助将非常感谢!非常感谢!

1 回答

  • 0

    您可以在A列上使用 match 功能来检查您是否已经拥有该国家/地区 . 如果匹配返回一个数字,使用它来替换国家数据,否则,它将返回错误 - 捕获它并在工作表的末尾添加数据 . 我写了's what you'但是想要做到这一点 .

    一般的approch将是:我正在使用匹配来查找行值,并且iferror以确保我没有返回错误 .

    country = Worksheets("Sheet1").Cells(1, "A").Value 'or where your drop down is
        test = Application.WorksheetFunction.IfError(WorksheetFunction.Match(country, "A:A", 0), -1)
        If test = -1 Then
            'copy to end of sheet
        Else
             *with sheets(Sheet1).cells(rows.value, test).end(xlup).offset(1,0)* 
            'copy to the value in test - it's the row number of the country we are copying now
        End If
    

相关问题