Excel 按自定义宏比较列中的每个单元格(循环为unhandy)

Excel 按自定义宏比较列中的每个单元格(循环为unhandy),excel,vba,Excel,Vba,我目前正在尝试比较列中的每个单元格,以便找到重复的单元格。我写了下面的代码,我知道它尽可能通过默认的Excel函数,但我想用上面提到的函数编写一个宏。当我运行我的代码时,Excel目前没有响应,我猜我运行了一个双for循环,有14K个单元格要比较,每个都会导致14.000*14.000个循环,这有点不方便。任何帮助都将不胜感激:) 试试这个: Sub findidentical() Dim i As Integer Dim j As Integer Dim x As Integer Dim C

我目前正在尝试比较列中的每个单元格,以便找到重复的单元格。我写了下面的代码,我知道它尽可能通过默认的Excel函数,但我想用上面提到的函数编写一个宏。当我运行我的代码时,Excel目前没有响应,我猜我运行了一个双for循环,有14K个单元格要比较,每个都会导致14.000*14.000个循环,这有点不方便。任何帮助都将不胜感激:)

试试这个:

Sub findidentical()

Dim i As Integer
Dim j As Integer
Dim x As Integer
Dim ColumnG As Integer

x = 0
ColumnG = Application.WorksheetFunction.CountA(Range("G:G"))
'ColumnG is 14K cells long'
For i = 2 To ColumnG
    For j = i + 1 To ColumnG
        If Cells(i, 7).Value = Cells(j, 7).Value Then
            x = x + 1
            Cells(i, 7).Font.Bold = True
            Cells(j, 7).Font.Bold = True
        End If
    Next j
Next i

Range("L25").Text = "Amount of duplicates"
Range("L26").Value = x

End Sub
首先,您需要使if语句中的每个命令都有自己的行,或者用
而不是
&
分隔它们<代码>&是字符串连接,而不是命令分隔符


第二,没有理由在2开始循环j,它已经与上面的所有内容进行了比较。因此,为什么不在vba中使用内置的Excel函数呢。明确地高级过滤器>复制G列的唯一值,然后计算唯一值。不用的时候,为什么要让生活更艰难呢?非常感谢!是的,1+1的小错误,我实际上是指i+1:)。
Sub findidentical()

Dim i As Integer
Dim j As Integer
Dim x As Integer
Dim ColumnG As Integer

x = 0
ColumnG = Application.WorksheetFunction.CountA(Range("G:G"))
'ColumnG is 14K cells long'
For i = 2 To ColumnG
    For j = i + 1 To ColumnG
        If Cells(i, 7).Value = Cells(j, 7).Value Then
            x = x + 1
            Cells(i, 7).Font.Bold = True
            Cells(j, 7).Font.Bold = True
        End If
    Next j
Next i

Range("L25").Text = "Amount of duplicates"
Range("L26").Value = x

End Sub