excel有两列数据,一列人名,一列数据,但人名有重复,我想用宏写出来,人名后面是他所有数据的总和,请教

2024-11-24 01:04:13
推荐回答(5个)
回答1:

我做一个宏,怎么发给你。
Sub 删除重复数据Macro4()
'
' 删除重复数据Macro4 Macro
'

'
Range("I1").Select
ActiveCell.FormulaR1C1 = "=RC[-8]"
Range("I2").Select
ActiveCell.FormulaR1C1 = _
"=IF(ROW()>COUNTIF(C[-8],""<>""),""数据完毕"",IF(ISERROR(1/COUNTIF(R1C:R[-1]C,RC[-8])),RC[-8],""""))"
Range("H1").Select
ActiveCell.FormulaR1C1 = _
"=IF(ROW()>COUNTIF(C[-7],""<>""),""数据完毕"",IF(RC[1]="""","""",SUMPRODUCT((C[-7]=RC[1])*C[-6])))"
Range("H1").Select
Selection.AutoFill Destination:=Range("H1:H2"), Type:=xlFillDefault
Range("H1:H2").Select
Range("F1").Select
ActiveCell.FormulaR1C1 = "=IF(ROW()>COUNT(C[2]),"""",LARGE(C[2],ROW()))"
Selection.AutoFill Destination:=Range("F1:F2"), Type:=xlFillDefault
Range("F1:F2").Select
Range("E1").Select
ActiveCell.FormulaR1C1 = _
"=IF(ROW()>COUNT(C[3]),"""",VLOOKUP(RC[1],C[3]:C[4],2,FALSE))"
Selection.AutoFill Destination:=Range("E1:E2"), Type:=xlFillDefault
Range("E1:E2").Select
Range("E2:I2").Select
Selection.AutoFill Destination:=Range("E2:I2401"), Type:=xlFillDefault
Range("E2:I2401").Select
Columns("E:F").Select
Range("E2385").Activate
Selection.Copy
Columns("A:A").Select
Range("A2385").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("C:J").Select
Range("C2385").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Selection.End(xlUp).Select
End Sub

回答2:

我感觉不用宏更简单、更灵活,可以用EXCEL自带的“合并计算”,很方便,求和、计数、平均值都可以。你可以试试看。
我用的是EXCEL2010,可能“合并计算”选项位置不一样,就不细说步骤了,推荐你个视频看看。
http://v.ku6.com/show/_eYpc2z-VGo4gHhM.html
如果你要写成宏的形式,可以录制一下。这样很方便。

回答3:

数据透视表 最简单
编宏的话受人员的变化限制

回答4:

按升序或者降序排列出来,再做不就很简单了吗

回答5:

用SUMIF吧