Excel精英培训网

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

[已解决]如何统计二维数组的相同元素的个数

[复制链接]
发表于 2014-5-14 19:09 | 显示全部楼层 |阅读模式
本帖最后由 f1red88 于 2014-5-20 18:38 编辑

怎么统计该数组的相同元素的个数
Sub c1()
Dim x, y As Integer
For x = 0 To 4
   For y = 0 To 9
   
     m(x, y) = Int(Rnd() * 10)
  
   Next
   
Next
sub
实现在循环中做统计,不是得出结果再统计
最佳答案
2014-5-15 09:15
我猜是这个意思。
  1. Sub c1()
  2.     Dim x, y As Integer
  3.     Dim m(0 To 4, 0 To 9) As Integer
  4.     Set d = CreateObject("scripting.dictionary")
  5.     For x = 0 To 4
  6.        For y = 0 To 9
  7.          m(x, y) = Int(Rnd() * 10)
  8.          d(m(x, y)) = d(m(x, y)) + 1
  9.        Next
  10.     Next
  11.     ActiveSheet.UsedRange.ClearContents
  12.     [a1].Resize(5, 10) = m
  13.     [a7].Resize(1, 2) = Array("相同元素", "出现次数")
  14.     [a8].Resize(d.Count, 1) = Application.Transpose(d.keys)
  15.     [b8].Resize(d.Count, 1) = Application.Transpose(d.items)
  16. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-5-14 21:06 | 显示全部楼层
回复

使用道具 举报

发表于 2014-5-15 09:15 | 显示全部楼层    本楼为最佳答案   
我猜是这个意思。
  1. Sub c1()
  2.     Dim x, y As Integer
  3.     Dim m(0 To 4, 0 To 9) As Integer
  4.     Set d = CreateObject("scripting.dictionary")
  5.     For x = 0 To 4
  6.        For y = 0 To 9
  7.          m(x, y) = Int(Rnd() * 10)
  8.          d(m(x, y)) = d(m(x, y)) + 1
  9.        Next
  10.     Next
  11.     ActiveSheet.UsedRange.ClearContents
  12.     [a1].Resize(5, 10) = m
  13.     [a7].Resize(1, 2) = Array("相同元素", "出现次数")
  14.     [a8].Resize(d.Count, 1) = Application.Transpose(d.keys)
  15.     [b8].Resize(d.Count, 1) = Application.Transpose(d.items)
  16. End Sub
复制代码
回复

使用道具 举报

发表于 2014-5-15 09:16 | 显示全部楼层
请看附件。

工作簿1.rar

8.85 KB, 下载次数: 37

回复

使用道具 举报

发表于 2014-5-15 16:10 | 显示全部楼层
  1. Sub c1()
  2.     Dim m(4, 9), c(9) '定义i结果数组m和统计数组c
  3.     For x = 0 To 4
  4.        For y = 0 To 9
  5.          t = Int(Rnd() * 10) '随机取值范围 0-9
  6.          m(x, y) = t '写入结果数组m 【这一步可以省略】
  7.          c(t) = c(t) + 1 '用数组c直接统计0-9的出现次数
  8.        Next
  9.     Next
  10.     [a1].Resize(, 10) = c '第1行中输出 0-9出现次数的统计结果
  11.     [a3].Resize(5, 10) = m  '第3行开始输出数组m的随机取值结果
  12. End Sub
复制代码
回复

使用道具 举报

发表于 2014-5-15 16:11 | 显示全部楼层
grf1973 发表于 2014-5-15 09:15
我猜是这个意思。

如果统计对象就是数字,则不需要用到字典。
回复

使用道具 举报

发表于 2014-5-15 16:27 | 显示全部楼层
香川群子 发表于 2014-5-15 16:11
如果统计对象就是数字,则不需要用到字典。

很对,直接把产生的随机数作为数组下标。
回复

使用道具 举报

发表于 2014-5-15 21:23 | 显示全部楼层
香川群子 发表于 2014-5-15 16:11
如果统计对象就是数字,则不需要用到字典。

佩服,真巧妙
回复

使用道具 举报

发表于 2014-5-15 22:21 | 显示全部楼层
楼主都没来表态呀!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 06:04 , Processed in 0.341717 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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