在Excel的sheet1表中,A4:O4这行数如果与A5:O6行中数字有重复就把该行重复的数字放在q4:Z4行,同样A5:O5这行数如果与A6:O7行中数字有重复就把该行重复的数字放在q5:Z5行,A列至O列的数字每行数字都进行这样的操作,并且得到的结果每4行中有 重复的数字,把结果在另一行写出来,我问了很多人写的程序都有BUG,哪位大神给写一下
要实现这个功能,您可以使用Excel的公式。以下是一个解决方案,您可以根据需要修改单元格范围:
在Q4单元格中输入以下公式:
=IF(ISNUMBER(MATCH(A4, A5:O6, 0)), A4, "")
这个公式会检查A4单元格中的数字是否在A5:O6范围内,如果有重复,则将A4的值放在Q4单元格中,否则为空。
选中Q4单元格,将其复制,然后选择R4:Z4范围,粘贴公式。这将检查B4:O4中的其他数字。
选中Q4:Z4范围,将其复制,然后选择Q5:Z5范围,粘贴公式。这将检查A5:O5与A6:O7范围的重复数字。
按照上述方法,将公式向下扩展,以检查所有行的重复数字。
在AA4单元格(或您选择的任何其他列)中输入以下公式,以显示每四行重复数字的结果:
=IF(MOD(ROW(),4)=0, TEXTJOIN(", ",TRUE,Q4:Z4), "")
这个公式会检查当前行号是否可以被4整除,如果可以,则将Q4:Z4范围内的重复数字用逗号分隔的形式显示出来。否则,单元格将为空。
将AA4单元格的公式向下扩展,以获取每四行的结果。
这样,您将在Q:Z列中看到每行与下两行比较的重复数字,并在AA列中看到每四行的结果。您可以根据需要调整行和列的范围。
没有结果
你写的代码不能用
Sub CheckDuplicates()
Dim i As Long, j As Long, k As Long
Dim range1 As Range, range2 As Range, range3 As Range
'设置第一个比较的范围
Set range1 = Range("A4:O4")
'循环比较每一行的数据
For i = 4 To 65536 Step 4
Set range2 = Range("A" & i + 1 & ":O" & i + 2)
Set range3 = Range("Q" & i & ":Z" & i)
For j = 1 To range1.Columns.Count
For k = 1 To range2.Columns.Count
'判断是否有重复的数字
If range1.Cells(1, j) = range2.Cells(1, k) Then
'把重复的数字放到指定的位置
range3.Cells(1, k) = range1.Cells(1, j)
End If
Next k
Next j
Set range1 = range2
Next i
'把结果在另一行输出
For i = 4 To 65536 Step 4
Set range1 = Range("A" & i & ":O" & i)
Set range2 = Range("A" & i + 3 & ":O" & i + 3)
Set range3 = Range("Q" & i & ":Z" & i)
For j = 1 To range1.Columns.Count
For k = 1 To range2.Columns.Count
'判断是否有重复的数字
If range1.Cells(1, j) = range2.Cells(1, k) Then
'把重复的数字放到指定的位置
range3.Cells(1, k) = range1.Cells(1, j)
End If
Next k
Next j
Next i
End Sub
使用方法:
在Excel中打开需要进行操作的文件,按下 Alt + F11 打开VBA编辑器。
在左侧的 Project - VBAProject 中,双击需要进行操作的表格的名称,打开代码编辑窗口。
将以上代码复制并粘贴到编辑窗口中。
按下 F5 运行代码,程序将自动完成操作。
注意:以上代码可能会影响到其他表格的数据,使用前请备份数据。