早教吧作业答案频道 -->其他-->
VBA统计0-9任意两个不同数字组成的次数从0-9中提取不同的两个数,且按升序排列,那么共有45组,现在有很多这样排列好的两个数字组合,每个组合已经用逗号隔开,最后一个组合后面也带逗号,要
题目详情
VBA统计0-9任意两个不同数字组成的次数
从0-9中提取不同的两个数,且按升序排列,那么共有45组,现在有很多这样排列好的两个数字组合,每个组合已经用逗号隔开,最后一个组合后面也带逗号,要求编写Function,统计这些组合出现的次数,次数放在小括号内,次数大的在前,次数相同的按升序排列,没有出现的计0次.例如Target为23,34,24,35,79,06,23,45,23,24,35,
那么通过Function ZuHe(Target)计算,得到的结果和格式是 23(3),24(2),35(2),06(1),34(1),45(1),79(1),01(0),02(0),……太多,这里省略…….78(0),89(0),
俺不会VBA,请编写完整的自定义函数,分随后奉上.
你的自定义函数不要用行号,列号,就用Function ZuHe(Target)这种形式.
从0-9中提取不同的两个数,且按升序排列,那么共有45组,现在有很多这样排列好的两个数字组合,每个组合已经用逗号隔开,最后一个组合后面也带逗号,要求编写Function,统计这些组合出现的次数,次数放在小括号内,次数大的在前,次数相同的按升序排列,没有出现的计0次.例如Target为23,34,24,35,79,06,23,45,23,24,35,
那么通过Function ZuHe(Target)计算,得到的结果和格式是 23(3),24(2),35(2),06(1),34(1),45(1),79(1),01(0),02(0),……太多,这里省略…….78(0),89(0),
俺不会VBA,请编写完整的自定义函数,分随后奉上.
你的自定义函数不要用行号,列号,就用Function ZuHe(Target)这种形式.
▼优质解答
答案和解析
这纯粹是在写算法呀,与Excel没什么关系!写好了,用法如下:
=ZuHe(Range),Range为Excel中一连续区域,比如:=ZuHe(A1:B17).
如果你不是区域,而是一个字符串,那还得改程序,不过这不是难点.
Option Explicit
Option Base 1
Function ZuHe(MyRange As Range) As String
Dim BaseDate(45,2) As String,qty(45,2) As Integer,Group As Integer
Dim m As Range,i As Integer,j As Integer,isChange As Boolean
'初始化模板数组
'BaseDate:数据、序号; qty:序号、次数
Call iniBaseData(BaseDate,qty)
'统计所给数据的重复次数
For Each m In MyRange
For i = 1 To 45
If BaseDate(i,1) = m.Value Then
qty(i,2) = qty(i,2) + 1
Exit For
End If
Next i
Next m
'对结果排序,按次数从大到小排
For i = 1 To 44
For j = i + 1 To 45
If qty(i,2) < qty(j,2) Then
Call Swap(qty(i,1),qty(j,1))
Call Swap(qty(i,2),qty(j,2))
End If
Next j
Next i
'对结果排序,相同次数的按数值从小到大排
Group = 1
i = 2
Do
If qty(i,2) = qty(Group,2) Then
i = i + 1
Else
'找到相同组数据区域,再对区域进行排序
Call GroupSort(qty,Group,i - 1)
Group = i
i = Group + 1
End If
Loop While i
=ZuHe(Range),Range为Excel中一连续区域,比如:=ZuHe(A1:B17).
如果你不是区域,而是一个字符串,那还得改程序,不过这不是难点.
Option Explicit
Option Base 1
Function ZuHe(MyRange As Range) As String
Dim BaseDate(45,2) As String,qty(45,2) As Integer,Group As Integer
Dim m As Range,i As Integer,j As Integer,isChange As Boolean
'初始化模板数组
'BaseDate:数据、序号; qty:序号、次数
Call iniBaseData(BaseDate,qty)
'统计所给数据的重复次数
For Each m In MyRange
For i = 1 To 45
If BaseDate(i,1) = m.Value Then
qty(i,2) = qty(i,2) + 1
Exit For
End If
Next i
Next m
'对结果排序,按次数从大到小排
For i = 1 To 44
For j = i + 1 To 45
If qty(i,2) < qty(j,2) Then
Call Swap(qty(i,1),qty(j,1))
Call Swap(qty(i,2),qty(j,2))
End If
Next j
Next i
'对结果排序,相同次数的按数值从小到大排
Group = 1
i = 2
Do
If qty(i,2) = qty(Group,2) Then
i = i + 1
Else
'找到相同组数据区域,再对区域进行排序
Call GroupSort(qty,Group,i - 1)
Group = i
i = Group + 1
End If
Loop While i
看了 VBA统计0-9任意两个不同...的网友还看了以下:
任何整数的平方的末位数不可能的是1,4,9,02,3,7,84,5,6,11,5,6,9晕.... 2020-05-17 …
1、2、3、4、5、6、7、8、9、10的平方根和立方根中,哪些是有理数?哪些是无理数?判断题(1 2020-06-25 …
数学问题开平方的前提要求是什么?比如3+6=9左右开平方9+36不等于81但3*2=69*4=36 2020-06-27 …
在excel中,如何从一列数据中,找出8个不同的数据比如在A列中,从A1-A50里有50个数据,这 2020-07-09 …
伙食费数学题伙食费15一天,今年6月6日交了330(周末不算),6月28日往后放暑假不吃.9月3号 2020-07-09 …
哥德巴赫猜想的证明思路是什么?从20世纪开始数学家们就在不断地逼近哥德巴赫猜想,从一开始的9+9到 2020-07-23 …
关于二次根式根号9是不是二次根式;老师说不是他说根号9是整数因为根号9=3;但我认为根号9是二次根 2020-08-02 …
足球比赛10:00开始,9:30允许观众入场,但早有人来排队等候入场.从第一个观众来到时起,每分钟来 2020-11-04 …
数字魔方一个猜想题我自己算了5年了实在算不出来9的N次方590495+9=144+9=1313+14 2020-11-27 …
数学题=W=画展9时开门,但早有人来排队等候入场,从第一个观众来到时起,每分钟来的观众人数一样多,如 2020-12-09 …