首页 > 解决方案 > 使用 VBA-Excel 获取工作表上的值 ID 以编辑或更新另一个工作表中的列表中的数据

问题描述

关于这个问题,如何通过 vba-excel 使用按钮更新单元格 ID 是否为真,所以我需要将表 1 中的一些值更新为另一个表的数据列表。

对于样品:

在 Sheet1 中(编辑或更新单元格的任何值)

在此处输入图像描述

在 Sheet2中(如果 ID 为 true,则获取更新的数据)

在此处输入图像描述

Sub update()
Dim LR1 As Long
With Sheets("Sheet2")
    LR1 = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("A" & LR1) = Sheets("Sheet1").Range("B2")
    .Range("B" & LR1) = Sheets("Sheet1").Range("B3")
    .Range("C" & LR1) = Sheets("Sheet1").Range("B4")
    .Range("D" & LR1) = Sheets("Sheet1").Range("B5")
End With
End Sub

我希望有人帮助我解决问题

标签: excelvba

解决方案


用于Find()定位匹配行(如果存在)然后更新该行:如果未找到则添加新行

Sub update()
Dim f As Range, sht1 As Worksheet
Set sht1 = Sheets("Sheet1")

With Sheets("Sheet2")
    Set f = .Range("A:A").Find(what:=sht1.Range("B1").Value, lookat:=xlWhole)
    If f Is Nothing Then Set f = .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0)
    f.Resize(1, 5).Value = Application.Transpose(sht1.Range("B1:B5").Value)
End With
End Sub

编辑:逐个单元格,如果您需要更多地控制去哪里

Sub update()

    Dim f As Range, sht1 As Worksheet
    Set sht1 = Sheets("Sheet1")

    With Sheets("Sheet2")
        Set f = .Range("A:A").Find(what:=sht1.Range("B1").Value, lookat:=xlWhole)
        If f Is Nothing Then Set f = .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0)
        With f.EntireRow
            .Cells(1).Value = sht1.Range("B1").value
            'skip one cell then copy the rest...
            .Cells(3).Resize(1, 4).Value = Application.Transpose(sht1.Range("B4:B5").Value)
            'etc etc
        End With

    End With

End Sub

推荐阅读