ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4532|回复: 7

[求助] 求助:如何统计二维数组中某元素的个数?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-2-17 21:13 | 显示全部楼层 |阅读模式
本帖最后由 VBA一笑 于 2016-2-17 21:17 编辑

如题:求助:如何统计二维数组中某元素的个数?

如下:
Sub 宏1()
Dim splittemp1, splittemp2
    splittemp1 = Range("D2:D10").Value
   ‘求语句……


    Range("E2:E10") = splittemp2

End Sub


‘求语句,能统计出 splittemp1(?,1)在 splittemp1 有多少个,把这个数据记录到splittemp2中,再在E2:E10中显示出来,也就是类似于E2=COUNTIF(D$2:D$10,D1)
希望老师能把 不用循环 和 用循环 的例子都给一下,谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-17 21:13 | 显示全部楼层
本帖最后由 VBA一笑 于 2016-2-17 21:18 编辑

在线等,,,,,

TA的精华主题

TA的得分主题

发表于 2016-2-17 21:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个循环一下就好了,干吗不循环。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-17 21:44 | 显示全部楼层
循环的已经懂了,有不循环的吗?

TA的精华主题

TA的得分主题

发表于 2016-2-17 21:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub 宏1()
  2. Dim splitTemp1, splitTemp2
  3. splitTemp1 = Range("D2:D10").Value
  4. ReDim splitTemp2(1 To UBound(splitTemp1), 1 To 1)
  5. For i = 1 To 9
  6.     For j = 1 To 9
  7.         If splitTemp1(i, 1) = splitTemp1(j, 1) Then splitTemp2(i, 1) = splitTemp2(i, 1) + 1
  8.     Next
  9. Next
  10. Range("E2:E10") = splitTemp2
  11. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-17 22:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢yuwd3

TA的精华主题

TA的得分主题

发表于 2016-2-18 20:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
VBA一笑 发表于 2016-2-17 21:44
循环的已经懂了,有不循环的吗?

给你一个香川老师关于这方面的答复:
给你一个靠谱的答复:

一般人总是误以为:一句简单的VBA命令语句,会比一大堆循环语句命令效率更高……

事实上结论是相反的:【VBA中的For……Next、For Each……Next语句,才是效率最高的。】



你这样理解就对了:
任何简单语句命令,事实上都不是直接完成工作,而是一个集成代码的引用而已。

比如,sum(A1:A10)
它的本质还是sum里面有一个循环:
    For Each cel In Range("A1:A10")
         Sum = Sum + cel.Value
     Next

不可能有一蹴而就的好事。


呵呵。

所以,为了提取子数组而使用循环,本来就是非常正常不过的思维,没什么不好。
完全不用感觉痛苦而想要避免写循环代码。

→ 即,你应该习惯于为了需要而自己写循环代码……这往往是更高效的做法。



http://club.excelhome.net/thread-1094166-1-1.html

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-4-29 19:15 | 显示全部楼层
yuwd3 发表于 2016-2-18 20:41
给你一个香川老师关于这方面的答复:
给你一个靠谱的答复:

感谢这段话、我一直努力的避免写循环,想方设法找用一句话能解决的现成函数。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 05:35 , Processed in 0.043439 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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