我是这个论坛的新手,但是在浏览了几条与我正在搜索的帖子类似的内容之后,我决定自己发布一个帖子,因为已经发布的帖子显然无法解决我的问题。但是,如果发布了适用于我的情况的代码,请告诉我应该做些什么以使其起作用并道歉,这是我的新手。
我有一个工作表,其数字集的范围从1到90,每行有5个随机数,例如:23 34 56 02 10
我想在Excel中找到的是我拥有的多行中3或4个数字的最常见组合,例如:
23 34 56 02 10
10 52 34 23 02
56 02 10 22 33
42 05 08 76 51
23 56 02 10 15
88 86 56 10 03
依此类推...意味着在此简短示例中,最常见的4数字组合为23 56 02 10
当然,基于此,我必须分析的数据始终以五组为一组,但达到1000行以上。
是否存在我可以在VBA中使用的代码或可以用来帮助我确定每行中相同数字出现的频率的公式?
我已经使用直方图对数字进行了独立处理,但是现在我希望看到类似数字确实一起出现的组合数量。
在此先感谢您的帮助。我是个新手,所以如果您可以逐步解释它,那么我将不胜感激。
答案 0 :(得分:0)
结果将粘贴到工作表2中排序。选择显示所有值的原因是,在许多情况下,您的数字具有相同的重复次数。最后,我认为您做错了,因为重复次数最多的四个数字分别是23、34、56、2。
尝试:
Option Explicit
Sub test()
Dim LastRowS1A As Long, LastRowS2A As Long, Times As Long, i As Long, y As Long
Dim str1 As String, str2 As String
LastRowS1A = Sheet1.Cells(Sheet1.Rows.Count, "E").End(xlUp).Row
For i = 1 To LastRowS1A
str1 = Sheet1.Range("A" & i).Value & " " & Sheet1.Range("B" & i).Value & " " & Sheet1.Range("C" & i).Value & " " & Sheet1.Range("D" & i).Value & " " & Sheet1.Range("E" & i).Value
LastRowS2A = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row
If Application.WorksheetFunction.CountIf(Sheet2.Range("A1:A" & LastRowS2A), str1) = 0 Then
Times = 1
For y = i + 1 To LastRowS1A
str2 = Sheet1.Range("A" & y).Value & " " & Sheet1.Range("B" & y).Value & " " & Sheet1.Range("C" & y).Value & " " & Sheet1.Range("D" & y).Value & " " & Sheet1.Range("E" & y).Value
If str1 = str2 Then
Times = Times + 1
End If
Next y
Sheet2.Range("A" & LastRowS2A + 1).Value = str1
Sheet2.Range("B" & LastRowS2A + 1).Value = Times
End If
Next i
LastRowS2A = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row
Sheet2.Range("A2:B" & LastRowS2A).Sort Key1:=Sheet2.Range("B1"), Order1:=xlDescending, Header:=xlNo
结束子
第1页:
第2页:
答案 1 :(得分:0)