发布网友 发布时间: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 的吧。