excel数据,1000行,每行6个数字,想统计每行分别有多少其它行与它有2、3、4、5、6个数字相同。谢谢!

例如第1行数字 2,16,22,36,40,48。想统计第2~1000行中有多少行与它有2、3、4、5、6个数字相同(以2个的时候为例,有多少行同时有2、40或16、48等,就是同时有任2个数字相同,只要有2个数字相同,统计个数即加1.其余类推)。结果可以是:其它行中与它有2个数字相同的行数是300个,3个数字相同的行数是200个,其余类推。对其它行而言,也是如此。例如第300行,统计第1~299、301~1000行中有多少行与它有2、3、4、5、6个数字相同。以4行的数据为例:3 7 18 25 33 371 4 9 15 31 341 4 9 25 33 361 3 7 24 42 45第三行同时含有25、33两个数字,第四行同时含有3、7两个数字,因此对第一行来说,有2行与它有2个数字相同,0行有3、4、5、6个相同。对第二行来说,有1行与它有3个数字相同。其余类推。
2026年09月21日 08:02
有5个网友回答
网友(1):

VBA 代码如下:

Function exist(a, b) As Boolean '数a是否在行b中存在
flag = 0
For i = 1 To 6
If Cells(b, i).Value = a Then
flag = 1
Exit For
End If
Next

If flag = 0 Then
exist = False
Else
exist = True
End If

End Function

Function samenum(a, b) 'a行中的6个数在b行有多少相同。
Dim num As Integer
num = 0
For i = 1 To 6
If exist(Cells(a, i).Value, b) Then
num = num + 1
End If
Next
samenum = num
End Function

Sub count()

Dim a2, a3, a4, a5, a6, rownum As Integer
rownum = 1000 '数据行数 根据需要可自行更改 例子中就为4(注意数据从第一行开始,没有标题行)
For i = 1 To rownum
a2 = 0
a3 = 0
a4 = 0
a5 = 0
a6 = 0
For j = 1 To rownum
If i <> j Then
Select Case samenum(i, j)
Case 2: a2 = a2 + 1
Case 3: a3 = a3 + 1
Case 4: a4 = a4 + 1
Case 5: a5 = a5 + 1
Case 6: a6 = a6 + 1
Case Else:
End Select
End If
Next
range("G" & i).Value = a2 'G列放该行有2个数相同的行数
range("H" & i).Value = a3 'H列放该行有3个数相同的行数
range("I" & i).Value = a4 'I列放该行有4个数相同的行数
range("J" & i).Value = a5 'J列放该行有5个数相同的行数
range("K" & i).Value = a6 'K列放该行有6个数相同的行数
Next

End Sub

把代码粘贴到宏编辑器 然后执行

网友(2):

在G1格中输入=COUNTIF($A$1:$F$1000,A1),向右向下填充。 语法解释为计算单元格A1在$A$1:$F$1000的范围内出现的次数。向右填充就是B1出现的次数,是不是这个意思?

网友(3):

不太清楚你的问题,你可以适着用筛选和查找

网友(4):

没有简单的公式,只能VBA实现。

网友(5):

asdsaasd