很简单的需求,但是中文网络上基本都是循环的方法,经过查找下面的方法很有效。为了方便用户的使用,进行了如下的整改。

1 Sub Statistics_Number_of_occurrences_test()
2 MyArray = Array("1", 23, 3, "1")
3 MsgBox Application.count(Application.Match(MyArray, Array("1"), 0)) '统计字符串"1"的出现次数,返回2
4 End Sub

为了便于使用,写成函数,用户可以调用该函数 Statistics_Number_of_occurrences(s, arr) 直接使用。

1 Function Statistics_Number_of_occurrences(s As Variant, arr As Variant) As Integer
2 '------------适用于一维数组、二维数组----------
3 '------------博客园:IssacNew------------------
4 '----https://www.cnblogs.com/issacnew/---------
5 Statistics_Number_of_occurrences = Application.count(Application.Match(arr, Array(s), 0))
6 End Function
1 '------使用例子-----
2 Sub test()
3 Dim s, arr1, arr2
4 s = 1
5 arr1 = Array(1, 2, 3, 3, 2, 1) '一维数组
6 arr2 = Array(Array(1, 2, 3, 1, 2, 1), Array(1, 2, 3, 3, 2, 1))
7 MsgBox Statistics_Number_of_occurrences(s, arr1) '一维数组,统计1出现的个数,返回3
8 MsgBox Statistics_Number_of_occurrences(s, arr2) '二维数组,统计1出现的个数,返回5
9 End Sub
参考资料:

01. https://www.mrexcel.com/board/threads/countif-for-vba-array-without-a-loop.739653/#post3635486

02. https://stackoverflow.com/questions/45367671/vba-array-countif

VBA | 统计数组某元素出现的次数,适用于一维、二维数组的更多相关文章

  1. 【面试题003】c数组做为参数退化的问题,二维数组中的查找

    [面试题003]c数组做为参数退化的问题,二维数组中的查找  一,c数组做为参数退化的问题 1.c/c++没有记录数组的大小,因此用指针访问数组中的元素的时候,我们要确保没有超过数组的边界, 通过下面 ...

  2. 二维数组过滤,根据多个条件获取二维数组中指定的arr

    /** * 二维数组过滤,根据多个条件获取二维数组中指定的arr * @param $data_arr * @param $lm_number * @param $source_type * @par ...

  3. 【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数

    // 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #i ...

  4. 数组属性的习题、Arrays工具、二维数组

    一.数组的练习 1.声明一个char类型的数组, 从键盘录入6个字符: [1]遍历输出 [2]排序 [3]把char数组转化成一个逆序的数组. import java.util.Scanner; pu ...

  5. java 数组基础学习(一维二维数组)

    1.一维数组 1>静态初始化:数据类型[ ] 变量名 = {元素} 例:int[ ] arr = {1,2} 动态初始化:数据类型[ ] 变量名 = new数据类型[数据长度] 例:int[ ] ...

  6. C语言数组篇(五)多级指针和二维数组指针的区别

    多级指针   以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[] --> 10个空间的数组 * p[] --> 这10个空间的数组里面存放 ...

  7. Java中一维,二维数组的静态和动态初始化

    今天我们要开始来讲讲Java中的数组,包括一维数组和二维数组的静态初始化和动态初始化 数组概述: 数组可以看成是多个相同类型数据的组合,对这些数据的统一管理; 数组变量属于引用数据类型,数组也可以看成 ...

  8. 二维数组的传输 (host <-> device)

    前言 本文的目的很明确:介绍如何将二维数组传递进显存,以及如何将二维数组从显存传递回主机端. 实现步骤 1. 在显存中为二维数组开辟空间 2. 获取该二维数组在显存中的 pitch 值 (cudaMa ...

  9. 第六篇:二维数组的传输 (host <-> device)

    前言 本文的目的很明确:介绍如何将二维数组传递进显存,以及如何将二维数组从显存传递回主机端. 实现步骤 1. 在显存中为二维数组开辟空间 2. 获取该二维数组在显存中的 pitch 值 (cudaMa ...

  10. Arrays工具、二维数组以及LeetCode练习题

    1 Arrays PS:Arrays位于java.util包下 int binarySearch(type[] a, type key); 使用二分法查询 key 元素在 a 数组中的索引,如果数组不 ...

随机推荐

  1. 【PB案例学习笔记】-01创建应用、窗口与控件

    写在前面 这是PB案例学习笔记系列文章的第一篇,也是最基础的一篇.后续文章中[创建程序基本框架]部分操作都跟这篇文章一样, 将不再重复.该系列文章是针对具有一定PB基础的读者,通过一个个由浅入深的编程 ...

  2. 数字化开采|AIRIOT智慧矿山自动化生产解决方案

    ​ 由于矿山地形复杂,生产自动化水平低,安全监管技术落后,事故频发等很多因素对煤矿开采技术提出了数据化.可视化.智能化的要求.通过目前的煤矿开采现状可以发现煤矿开采过程中,在生产.监管.巡检.安全.效 ...

  3. MinIo对象存储文件上传,下载,预览,批量上传,创建桶等

    MinIo 操作工具类 MinIo 旧中文文档 MinIo 英文文档 MinIo 官网地址 https://min.io/ package com.ming.utils; import io.mini ...

  4. [渗透测试] HTB_Surveillance WriteUp [上]

     靶机:Surveillance (from Hack The Box)  工具:Kali Linux  目标:拿到user和root的一串32位hex字符串 ## 配置hosts 环境启动后,要设置 ...

  5. mac for docker访问宿主机服务

    转载链接 https://blog.csdn.net/weixin_33860528/article/details/91461648

  6. Android 12(S) MultiMedia Learning(九)MediaCodec

    这一节来学习MediaCodec的工作原理,相关代码路径: http://aospxref.com/android-12.0.0_r3/xref/frameworks/av/media/libstag ...

  7. TDSQL数据库考试实操题

    第一题: 演练二 物理备份(5分) 答: 第二题:2. 演练一 请根据给定的演练方案,进行相关演练,并按如下要求提交截图 主备切换(5分) 答: 第三题:3. 演练一 请根据给定的演练方案,进行相关演 ...

  8. mysql忘记密码找回的方法

    mysql忘记密码找回的方法: 在找回之前需要对 --skip-networking 参数进行了解 --skip-grant-tables: 关闭mysql验证模块 同时还需要关闭远程连接(避免他人连 ...

  9. k8s——集群环境问题合集

    创建集群 k8s集群创建 集群环境问题合集 重置master节点 kubeadm reset -f # -f 强制重置 可选 重置node节点 # 当你的master节点重置后,node节点需要重新加 ...

  10. MySQL创建表的时候建立联合索引的方法

    1.MySQL创建表建立联合索引的步骤 在MySQL中,联合索引(也称为复合索引或多列索引)是基于表中的多个列创建的索引.这种索引可以提高多列查询的性能,特别是当查询条件涉及这些列时.下面是一个详细的 ...