excel宏命令合并两表 如下所示:

发布网友 发布时间:2022-04-22 23:34

我来回答

2个回答

热心网友 时间:2023-06-30 21:42

Sub 汇总()
    Dim Ar, D As Object, I As Long
    Application.ScreenUpdating = False
    Set D = CreateObject("scripting.dictionary")
    Ar = Sheets("sheet2").[A1].CurrentRegion
    For I = 2 To UBound(Ar)
        D(Trim(Ar(I, 1))) = Ar(I, 2)
    Next
    Ar = Sheets("SHEET1").Range("A1:C" & Sheets("SHEET1").[A65536].End(3).Row)
    Ar(1, 3) = "工资2"
    For I = 2 To UBound(Ar)
        If D.exists(Trim(Ar(I, 1))) Then
            Ar(I, 3) = D(Trim(Ar(I, 1)))
            D.Remove (Trim(Ar(I, 1)))
        End If
    Next
    Sheets("sheet3").Cells.Clear
    Sheets("sheet3").[A1].Resize(UBound(Ar), 3) = Ar
    Sheets("sheet3").Range("A" & UBound(Ar) + 1) = Application.Transpose(D.KEYS)
    Sheets("sheet3").Range("C" & UBound(Ar) + 1) = Application.Transpose(D.ITEMS)
    MsgBox "完成"
End Sub

具体可能还要根据实际表格进行修改。

热心网友 时间:2023-06-30 21:43

你的表1和表2是在同一个excel里还是分别在两个excel里?

如果要合成你表3的那种形式的话其实用VLOOKUP函数即可
首先你把表1和表2的名字都复制到表3同一列里然后去重(03用高级筛选,选择不重复项,07或以上有相应的去重功能),将去重后的名字复制到表3的A列

然后在B列即C列中的公式如下(假设你的表1和表2在同一个Excel里,即是sheet1和sheet2,并且两个表的A列为姓名,B列为工资)

表3(sheet3)B列公式:=IF(ISNA(VLOOKUP(A2,SHEET1!A:B,2,0)),"",VLOOKUP(A2,SHEET1!A:B,2,0))
表3(sheet3)C列公式::=IF(ISNA(VLOOKUP(A2,SHEET2!A:B,2,0)),"",VLOOKUP(A2,SHEET2!A:B,2,0))

如果表1和表2不是在同一个excel里的话,那进行跨表引用即可。追问我要用宏命令 分别在两个表

追答在两个表中函数也可以解决的,跨表引用就行了,没必要用到宏,宏的话你还要修改宏安全性改,有一定的安全隐患。

如果你非要用宏的话,就看 crazy0qwer 的吧。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com