Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7132|回复: 22

[已解决]excel如何对比两个单元格的内容,如果两个单元格内容有两个或两个以上相同就返回一...

[复制链接]
发表于 2015-12-17 08:46 | 显示全部楼层 |阅读模式
如图,两个单元格对比,如果两个单元格的相同数据个数超过两个或两个以上就返回一个固定值,例如,B3和E1对比,如果有两个或两个以上相同的就返回一个值”A1“,怎么做啊?跪求大神解决。谢谢。
最佳答案
2015-12-17 22:06
Dim dic As Object

'主程序
Sub test1()
    Dim A, B, i%, j%, k%, s%, AreaName$, AreaStart%
    A = Sheets(1).UsedRange
    Set dic = CreateObject("scripting.dictionary")

    For i = 3 To UBound(A)
        For j = 4 To UBound(A, 2)
            '更新区名(AreaName)和区名所在列(AreaStart)
            If Len(A(1, j)) = 2 Then AreaName = A(1, j): AreaStart = j
            '如果B列有数据,并不是区名所在列
            If A(i, 2) <> "" And Len(A(1, j)) > 2 Then
                dic.RemoveAll: s = 0
                Call test2(A(i, 2))
                Call test2(A(1, j))
                B = dic.items

                '统计大于1次的数字的数量(s)
                For k = 0 To UBound(B)
                    If B(k) > 1 Then s = s + 1
                Next k

                '如果数量>1,就显示编号(区名+列),否则显示为空
                If s > 1 Then A(i, j) = Left(AreaName, 1) & j - AreaStart Else A(i, j) = ""
            End If
        Next j
    Next i

    Sheets(1).Range("a1").Resize(i - 1, j - 1) = A
End Sub

'重复的操作:统计每个数字出现的次数
Sub test2(x)
    Dim B, i
    B = VBA.Split(x, ",")
    For i = 0 To UBound(B)
        dic(B(i)) = dic(B(i)) + 1
    Next i
End Sub
(, 下载次数: 6)
QQ截图20151216152530.png
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-12-17 09:21 | 显示全部楼层
B3和E1对比,如果有两个或两个以上相同的就返回一个值”A1“,

A1是什么含义?
如果不满足将怎样?
回复

使用道具 举报

 楼主| 发表于 2015-12-17 16:18 | 显示全部楼层
爱疯 发表于 2015-12-17 09:21
B3和E1对比,如果有两个或两个以上相同的就返回一个值”A1“,

A1是什么含义?

A1是自己随便指定的一个值,如果不满足条件就什么都不用显示,就是为空。
回复

使用道具 举报

发表于 2015-12-17 16:29 | 显示全部楼层
建议上传附件,否则别人不好回复
回复

使用道具 举报

 楼主| 发表于 2015-12-17 16:33 | 显示全部楼层
爱疯 发表于 2015-12-17 16:29
建议上传附件,否则别人不好回复

你有QQ吗?我加你QQ说,真急死我了。
回复

使用道具 举报

发表于 2015-12-17 16:45 | 显示全部楼层
如果有不便公开的内容,可先替换或删除一下。

还是上传附件吧,发在论坛上会得到更快、更好的回复。我不一定有空。。。
回复

使用道具 举报

 楼主| 发表于 2015-12-17 16:48 | 显示全部楼层
爱疯 发表于 2015-12-17 16:45
如果有不便公开的内容,可先替换或删除一下。

还是上传附件吧,发在论坛上会得到更快、更好的回复。我不 ...

就是这个。麻烦大神帮帮忙啊。

两码差.rar

316.4 KB, 下载次数: 2

回复

使用道具 举报

 楼主| 发表于 2015-12-17 16:49 | 显示全部楼层
mikezhang 发表于 2015-12-17 16:48
就是这个。麻烦大神帮帮忙啊。

在Sheet1那个表里
回复

使用道具 举报

发表于 2015-12-17 17:20 | 显示全部楼层
两码差.rar (37.25 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2015-12-17 17:38 | 显示全部楼层
爱疯 发表于 2015-12-17 17:20
结果是这样子吗

不对啊,我的意思是说一个单元格和一个单元格对比,如果两个单元格的相同数字有两个或两个以上的返回一个指定值。你这个做的有两个或两个以上相同的值也返回0,没有也返回0啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 07:39 , Processed in 0.614962 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表