我目前正在尝试将列中的每个单元格相互比较,以便找到重复项。我写下面的代码,我知道它可能通过默认的Excel函数,但我想写一个宏与上述功能。当我运行我的代码时Excel当前没有响应,我的猜测是我运行一个带有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 = 1 + 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
答案 0 :(得分:0)
试试这个:
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处启动Loop j它已经与上面的所有内容进行了比较。所以从i+1