EXCEL 多条件去重复计数的问题 5
EXCEL里A列张三、张三、李四、李四……,B列有销售、销售、赠送、赠送……,C列王五、赵六……(这一列有重复的人名,并且有不知道的人名,不能指定)。现在需要统计张三、李...
EXCEL 里A列 张三、张三、李四、李四……,B列有销售、销售、赠送、赠送……,C列王五、赵六……(这一列有重复的人名,并且有不知道的人名,不能指定)。现在需要统计张三、李四分别销售和赠送的C列客户的个数,并去除重复个数(若A、B、C列数据完全一致,要求统计个数为1)
麻烦哪位大大解答一下 展开
麻烦哪位大大解答一下 展开
展开全部
在F2单元格输入以下公式,然后向右向下填充公式
=SUMPRODUCT(($A$1:$A$10&$B$1:$B$10=$E2&LEFT(F$1,2))*(MATCH($A$1:$A$10&$B$1:$B$10&$C$1:$C$10,$A$1:$A$10&$B$1:$B$10&$C$1:$C$10,0)=ROW($1:$10)))
公式表示:将A列和B列连接起来后,符合等于E2与F1前两个字符的不重复的个数进行计数。
公式中:($A$1:$A$10&$B$1:$B$10=$E2&LEFT(F$1,2)实现了满足复合条件
MATCH($A$1:$A$10&$B$1:$B$10&$C$1:$C$10,$A$1:$A$10&$B$1:$B$10&$C$1:$C$10,0)=ROW($1:$10) 进行不重复数据的计数。
前后组合后,就是满足前面复合条件的不重复数据的计数。
详见附图
展开全部
不用宏就得加辅助列
假设第一行为标题,数据在A2:B100区域内
将D列当作辅助列,D2输入公式
=SUMPRODUCT((A$2:A2=A2)*(B$2:B2=B2)*(C$2:C2=C2)) 下拉填充至第100行
张三销售C列客户的个数
=SUMPRODUCT((A$2:A$100="张三")*(B$2:B$100="销售")*(D$2:D$100=1))
张三赠送C列客户的个数
=SUMPRODUCT((A$2:A$100="张三")*(B$2:B$100="赠送")*(D$2:D$100=1))
其他的替换一下公式内的姓名就行了
假设第一行为标题,数据在A2:B100区域内
将D列当作辅助列,D2输入公式
=SUMPRODUCT((A$2:A2=A2)*(B$2:B2=B2)*(C$2:C2=C2)) 下拉填充至第100行
张三销售C列客户的个数
=SUMPRODUCT((A$2:A$100="张三")*(B$2:B$100="销售")*(D$2:D$100=1))
张三赠送C列客户的个数
=SUMPRODUCT((A$2:A$100="张三")*(B$2:B$100="赠送")*(D$2:D$100=1))
其他的替换一下公式内的姓名就行了
追问
是不是有空白的行会产生错误? 假设我还要有一列为“型号”,也要做为条件之一。公式要怎么写?
追答
方法跟上面的差不多
公式就象是这个样子
=SUMPRODUCT((A$2:A$100="张三")*(B$2:B$100="销售")*(D$2:D$100="型号")*(E$2:E$100=1))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你一个宏你可以把这张有重复的表整理一下删除完全重复的行.然后再做统计就容易多了
Sub 删除完全重复的行()
Dim Endcol, Endrow, Hang, HangNumer, X, Y As Integer
Dim Rng As Range
Dim RngXT As Range
Endcol = [iv1].End(xlToLeft).Column
Endrow = Range("A65536").End(xlUp).Row
For X = Endrow To 1 Step -1
AA = "A1" & ":A" & Endrow - 1
BB = Range("A" & Endrow)
Set Rng = Range(AA).Find(BB, LookAt:=xlWhole)
If Not Rng Is Nothing Then
Do
Hang = Rng.Address(RowAbsolute:=False, ColumnAbsolute:=False)
HangNumer = Mid(Hang, 2, Len(Hang) - 1)
For Y = 2 To Endcol
If Cells(X, Y) = Cells(HangNumer, Y) Then
If Y = Endcol Then
Cells(X, Y).EntireRow.Delete
Set Rng = Range(AA).FindNext(Rng)
CC = Rng.Address
Endrow = Range("A65536").End(xlUp).Row
End If
Else
Exit For
End If
Next
Loop While Not Rng Is Nothing And Rng.Address(RowAbsolute:=False, ColumnAbsolute:=False) <> Hang
End If
Next
End Sub
Sub 删除完全重复的行()
Dim Endcol, Endrow, Hang, HangNumer, X, Y As Integer
Dim Rng As Range
Dim RngXT As Range
Endcol = [iv1].End(xlToLeft).Column
Endrow = Range("A65536").End(xlUp).Row
For X = Endrow To 1 Step -1
AA = "A1" & ":A" & Endrow - 1
BB = Range("A" & Endrow)
Set Rng = Range(AA).Find(BB, LookAt:=xlWhole)
If Not Rng Is Nothing Then
Do
Hang = Rng.Address(RowAbsolute:=False, ColumnAbsolute:=False)
HangNumer = Mid(Hang, 2, Len(Hang) - 1)
For Y = 2 To Endcol
If Cells(X, Y) = Cells(HangNumer, Y) Then
If Y = Endcol Then
Cells(X, Y).EntireRow.Delete
Set Rng = Range(AA).FindNext(Rng)
CC = Rng.Address
Endrow = Range("A65536").End(xlUp).Row
End If
Else
Exit For
End If
Next
Loop While Not Rng Is Nothing And Rng.Address(RowAbsolute:=False, ColumnAbsolute:=False) <> Hang
End If
Next
End Sub
更多追问追答
追问
能不能不用宏?有简单点的方法吗?
主要是这个不懂!!! 谢谢了
追答
不需要你懂 你会用就行.对于重复的记录数据你留着也是垃圾记录.清理一下也是好的.对于你说的情况一般都是先去除重复记录然后才能统计处理.用宏是最简便的方法.因为你没有一个函数或者公式能做到整条记录去比对是不是完全一样.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
啥问题,你倒是说呀。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用VBA可解决所有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询