EXCEL VBA 判断是否有重复内容

1。判断区域1范围(K3:N12)内是否有重复内容

这个应该用不上VBA吧。给你一个经典数组公式
{=SUM(1/COUNTIF(K3:N12,K3:N12))}
可以用来计算区域内的数据项个数,再和单元格数量求下差就知道有没有重复项了。
一般来说,公式解决不了的问题才值得用VBA。excel内部公式的计算效率比执行VBA代码可高多了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-19
Dim arr As Range
Dim rng As Range
Set arr = Range("K3:N12")
For Each rng In arr
    k = Application.CountIf(arr, rng)
    If k > 1 Then
        MsgBox "单元格 " & rng.Address & " 重复"
    End If
Next

追问

1。 K3:N12范围“有”重复时,合并C列倒数第一单元内容和F列倒数第一单元内容到
P3:Y12(这个范围内的空单元中)

2。 K3:N12范围“没有”重复时,合并C列倒数第一单元内容和F列倒数第一单元内容到
AA3:AJ12(这个范围内的空单元中)

追答

C列和F列相距甚远,如何能合并。所提合并做何解?
不知所云。

追问

1。 K3:N12范围“有”重复时,将J3内容复制到P3:Y12(这个范围内的空单元中)

2。 K3:N12范围“没有”重复时,将J3内容复制到AA3:AJ12(这个范围内的空单元中)

追答Private Sub CommandButton1_Click()
Dim arr As Range
Dim rng As Range
Dim rag As Range
Set arr = Range("K3:N12")
For Each rng In arr
    k = Application.CountIf(arr, rng)
    If k > 1 Then
        MsgBox "单元格 " & rng.Address & " 重复"
        For Each rag In Range("P3:Y12")
            If rag = "" Then
                rag = Range("j3")
                Exit For
            End If
        Next
        Exit For
    End If
Next
End Sub

追问

是这样的(这是有重复时的情况)

2。 K3:N12范围“没有”重复时,将J3内容复制到AA3:AJ12(这个范围内的空单元中)

追答

“有”的情况已经写了,没有的情况你不会模仿?

Private Sub CommandButton1_Click()
Dim arr As Range
Dim rng As Range
Dim rag As Range
Dim rcg As Range
Set arr = Range("K3:N12")
For Each rng In arr
    k = Application.CountIf(arr, rng)
    If k > 1 Then
        For Each rag In Range("P3:Y12")
            If rag = "" Then
                rag = Range("j3")
                Exit Sub
            End If
        Next
        Exit For
    End If
Next
For Each rcg In Range("AA3:AJ12")
    If rcg = "" Then
        rcg = Range("j3")
        Exit For
    End If
Next
End Sub

 

本回答被提问者采纳
第2个回答  2015-10-13
用字典,使用count,与原先的数组比较数量
假如你是多单元格作为条件进行比较,先用join把该区域连接成一个一列的二维数组,然后使用字典,item进行计数。只要存在item超过1的,就表示存在重复值。
第3个回答  2015-10-12
用循环语句判断
相似回答