早教吧作业答案频道 -->其他-->
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任意两个不同...的网友还看了以下:
用阿拉伯数字表示序数词时,必须在数字后加上序数词的最后两个字母.例如:第21:21st第32:32 2020-05-17 …
图的邻接表存储结构表头结点后面跟的邻接结点的排列先后顺序有要求吗?比方说结点A有三个邻接结点:BC 2020-06-08 …
二叉树顺序遍历问题!找出所有二叉树,其节点在下列两种次序下恰好都以同样的次序出现.①先序和中序,② 2020-06-15 …
氢氧化钠和硫酸铜反应加入顺序不同加热后现象不同?加入顺序不同会出现蓝色絮状沉淀加热后一个是黑色沉淀 2020-07-08 …
有点不明白,入栈出栈不是说先进后出,那既然入的顺序定了,出的顺序不是只有一种?1.有5个元素,其入 2020-07-10 …
在m(m≥2)个不同数的排列P1P2……Pn中,若1≤i<j≤m时,Pi>Pj(即前面某数大于后面某 2020-11-20 …
怎样用链表的方法解决基于有序顺序的二分法查找数据?如3212//3表示要查找的元素,2表示一共有2个 2020-12-05 …
为什么由二叉树的中序和前序遍历序列可以唯一确定一棵二叉树,而由前序和后序遍历则不能?同样为什么二叉树 2020-12-05 …
某市春晚原有10个节目,导演最后决定添加3个与“抗冰救灾”有关的节目,但是救灾节目不排在第一个,也不 2020-12-10 …
电容和电阻串联,两者前后位置顺序不同的话,有什么不同?比如在一个简单的高通滤波电路中,即一个电阻和一 2020-12-15 …