Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2488|回复: 8

[已解决]数字出现次数的统计 的 问题 vba 求解

[复制链接]
发表于 2012-3-30 00:46 | 显示全部楼层 |阅读模式
附件: 20120329help.rar (6.61 KB, 下载次数: 18)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-3-30 07:04 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2012-3-30 08:36 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2012-3-30 14:34 | 显示全部楼层
{:031:}

继续等待解答、
回复

使用道具 举报

 楼主| 发表于 2012-3-30 19:34 | 显示全部楼层
很有喜感

{:271:}
回复

使用道具 举报

 楼主| 发表于 2012-3-31 08:43 | 显示全部楼层
谢谢 浏览过的  老师们
回复

使用道具 举报

发表于 2012-3-31 08:53 | 显示全部楼层
那些次数为0的是返回的什么样的数据?
这里的结果没有返回

  1. Sub justtest()
  2.     Dim S$, Pa$, Sd$, Ar(1 To 3), j As Byte, ArS(1 To 6, 1 To 1)
  3.     Dim d(1 To 3) As New Dictionary, K&, M$, A
  4.     For j = 1 To 3
  5.         Ar(j) = Mid([b1], j, 1)
  6.     Next j
  7.     Pa = ThisWorkbook.Path & "\test.txt"
  8.     Open Pa For Input As #1
  9.         K = 0
  10.         Do Until EOF(1)
  11.             Line Input #1, Sd
  12.             K = K + 1
  13.             Sd = Split(Sd)(1)
  14.             For j = 1 To 3
  15.                 M = Mid(Sd, Ar(j), 1)
  16.                 d(3)(M) = d(3)(M) + 1
  17.                 If K Mod 2 = 1 Then
  18.                     d(1)(M) = d(1)(M) + 1
  19.                 Else
  20.                     d(2)(M) = d(2)(M) + 1
  21.                 End If
  22.             Next j
  23.         Loop
  24.     Close #1
  25.     ArS(1, 1) = "奇数行": ArS(3, 1) = "偶数行": ArS(5, 1) = "总排序"
  26.     ArS(2, 1) = SA(d(1)): ArS(4, 1) = SA(d(2)): ArS(6, 1) = SA(d(3))
  27.     [a1:a6] = ArS
  28.     Erase d
  29.     MsgBox "处理完毕!"
  30. End Sub
  31. Function SA(d As Dictionary) As String
  32.     Dim A1, A2, i&, j&, C
  33.     A1 = d.Keys: A2 = d.Items
  34.     For i = 0 To UBound(A1) - 1
  35.         For j = i + 1 To UBound(A1)
  36.             If A2(i) < A2(j) Then
  37.                 C = A1(i): A1(i) = A1(j): A1(j) = C
  38.                 C = A2(i): A2(i) = A2(j): A2(j) = C
  39.             End If
  40.     Next j, i
  41.     For i = 0 To UBound(A1)
  42.         SA = SA & " " & A1(i) & "[" & A2(i) & "]"
  43.     Next i
  44.     SA = Mid(SA, 2)
  45. End Function
复制代码
新建文件夹.rar (12.19 KB, 下载次数: 24)
回复

使用道具 举报

 楼主| 发表于 2012-3-31 12:01 | 显示全部楼层
本帖最后由 1testvba 于 2012-3-31 12:06 编辑

liuguansky 老师好。、。

出现次数为0的。就是 0-9 10个数 未出现的 数字。

不显示次数0 也没关系。再后面自动加上 次数为0,即未出现的数字 也可以、

比如这样:

奇数行
8[4] 5[2] 3[1] 2[1] 1[1] 04679
偶数行
0[3] 2[2] 9[1] 8[1] 5[1] 4[1] 1367
总排序
8[5] 5[3] 2[3] 0[3] 9[1] 4[1] 3[1] 1[1] 67
回复

使用道具 举报

发表于 2012-3-31 14:41 | 显示全部楼层    本楼为最佳答案   
1testvba 发表于 2012-3-31 12:01
liuguansky 老师好。、。

出现次数为0的。就是 0-9 10个数 未出现的 数字。
  1. Sub justtest()
  2.     Dim S$, Pa$, Sd$, Ar(1 To 3), j As Byte, ArS(1 To 6, 1 To 1)
  3.     Dim d(1 To 3) As New Dictionary, K&, M$, A
  4.     For j = 1 To 3
  5.         Ar(j) = Mid([b1], j, 1)
  6.     Next j
  7.     Pa = ThisWorkbook.Path & "\test.txt"
  8.     Open Pa For Input As #1
  9.         K = 0
  10.         Do Until EOF(1)
  11.             Line Input #1, Sd
  12.             K = K + 1
  13.             Sd = Split(Sd)(1)
  14.             For j = 1 To 3
  15.                 M = Mid(Sd, Ar(j), 1)
  16.                 d(3)(M) = d(3)(M) + 1
  17.                 If K Mod 2 = 1 Then
  18.                     d(1)(M) = d(1)(M) + 1
  19.                 Else
  20.                     d(2)(M) = d(2)(M) + 1
  21.                 End If
  22.             Next j
  23.         Loop
  24.     Close #1
  25.     ArS(1, 1) = "奇数行": ArS(3, 1) = "偶数行": ArS(5, 1) = "总排序"
  26.     ArS(2, 1) = SA(d(1)): ArS(4, 1) = SA(d(2)): ArS(6, 1) = SA(d(3))
  27.     [a1:a6] = ArS
  28.     Erase d
  29.     MsgBox "处理完毕!"
  30. End Sub
  31. Function SA(d As Dictionary) As String
  32.     Dim A1, A2, i&, j&, C
  33.     For i = 0 To 9
  34.         If Not d.Exists(i & "") Then
  35.             d.Add i & "", 0
  36.         End If
  37.     Next i
  38.     A1 = d.Keys: A2 = d.Items
  39.     For i = 0 To UBound(A1) - 1
  40.         For j = i + 1 To UBound(A1)
  41.             If A2(i) < A2(j) Then
  42.                 C = A1(i): A1(i) = A1(j): A1(j) = C
  43.                 C = A2(i): A2(i) = A2(j): A2(j) = C
  44.             End If
  45.     Next j, i
  46.     For i = 0 To UBound(A1)
  47.         SA = SA & " " & A1(i) & "[" & A2(i) & "]"
  48.     Next i
  49.     SA = Mid(SA, 2)
  50. End Function
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 02:25 , Processed in 0.379599 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表