VBA信息获取与处理第四节:获取唯一非重复随机值的返回数组

news2025/2/25 2:19:30

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。

教程共两册,二十个专题。今日分享内容是:VBA信息获取与处理第二个专题第四节:获取唯一非重复随机值的返回数组3ab18d4e814eb1c8094e15638adc715a.jpeg

【分享成果,随喜正能量】苦难不会没完没了,幸运也不会永远持续。得意时不忘形,失意时不消沉。人生的起伏都是考验。知幻即离,一个人最了不起的能力,不是摆平任何人,而是摆正自己。。

第四节 获取唯一非重复值的返回数组

讲到这里,大家对于随机数的利用应该有了一个大概的认识,但是,在第三节的程序中我们发现,在多次点击运行后,会出现数据重复的现象,如下面的截图:

f6424bc10abf1fbfb3fbde71962b5bfe.jpeg

而在利用随机数的场景中,有一些特例是不能重复的,比如输入源数组AA()如果是某个公司的人员编号,随机返回的是年终抽奖的结果,这个时候问题来了,在同批次得奖的人员中不可能有重复的啊?如何让返回的随机数组成的数组是唯一非重复的数组呢?我们这节就来解决这个问题。

1 思路分析及代码实现

为了解决这个问题,我们只需要在产生随机数后,在源数组中将这个值的位置调整到最后,然后下一次产生随机数时在余下的源数据中产生即可。思路有了,我们看代码的实现,这节的代码和上一节是相似的,我只讲不同的部分:

T = UBound(AA)

For J = LBound(BB) To UBound(BB)

I = Int((T - Mim + 1) * Rnd + Mim)

BB(J) = AA(I)

'对源数组数据进行处理,将第i个值放到T的位置

Temp = AA(I)

AA(I) = AA(T)

AA(T) = Temp

T = T - 1

Next

代码截图:

fcbbd67af9f096764575ea32ac3fd7f2.jpeg

代码讲解:上述代码中首先将源数组的最大下标值赋给T,这里的T是可变的,每次将下移一个单位,所取出的值位置I: I = Int((T - Mim + 1) * Rnd + Mim),也就是说这个范围是可变的。

① T = UBound(AA) 将源数据的最大下标值赋给T

② I = Int((T - Mim + 1) * Rnd + Mim)

BB(J) = AA(I)

取得I的随机位置,并给输出数组赋值。

③ Temp = AA(I)

AA(I) = AA(T)

AA(T) = Temp

将源数组的最后的值和第I个值交换位置。

④ T = T – 1

调整下次取得随机数的范围。

我们最后看看利用上述代码的输出:

8ac340189fe6c0067bb813d6ab934244.jpeg

从上面的输出看,保证了数据的唯一性。

【待续】

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

2bc578188a48a40f3c44b02d6abef76d.jpeg

0c5a3612bb081f657c58ca49312d6a89.jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1585831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

001-NodeJs全局对象

概念 node是一个运行js的平台,在node中,用global对象取代了Window这个对象。 node中的repl环境可以执行js,通过命令node进入到repl环境。repl环境类似于Chrome的开发人员工具。 全局对象global 可以参考一下它的文档global全局对象 node版本介绍&am…

C++ stl容器vector的底层模拟实现

目录 前言: 1.成员变量,容量与大小 2.构造函数 无参构造: 带参的使用值进行构造: 使用迭代器区间进行构造: 3.交换 4.拷贝构造 5.赋值重载 6.迭代器 7.扩容 reserve: resize: 8.…

深入OceanBase内部机制:系统架构与组件精讲

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 目录 1️⃣OceanBase 整体架构1.1 分区1.2 分片1.3 日志流1.4 对等节点1.5 多租户 2️⃣OceanBase 架构与组件详解2.1 存储层2.2 …

公司电脑如何对文件进行加密?

在现代企业中,文件加密是确保敏感数据安全的关键。使用华企盾DSC数据安全防泄密系统,公司电脑可以轻松地对文件进行加密,以防止未授权的访问和数据泄露。以下是对文件进行加密的步骤和方法: 智能半透明加密:这种模式允…

【java数据结构-二叉树(上)】

java数据结构-二叉树(上) 二叉树的概念二叉树的节点介绍 二叉树构造如何使用兄弟表示法构造二叉树两种特别的二叉树二叉树的基本性质: 二叉树的存储二叉树的遍历:前序遍历:中序遍历:后序遍历:层…

pygame发射子弹后绘制射线

import pygame import sys import mathpygame.init()screen pygame.display.set_mode((800, 600)) pygame.display.set_caption("Rotate and Shoot Bullets")# 定义子弹类 class Bullet:def __init__(self, x, y, angle):self.x xself.y yself.angle angleself.s…

python中的异常

1、NoSuchElementException 找不到元素 2、ElementNotInteractableException 元素无法交互 可能原因1:元素定位到以后,无法点击---元素未渲染完 解決:使用expected_conditions模块下的element_to_be_clickable来判断元素是否可被点击&#…

【MATLAB源码-第8期】基于matlab的DPSK的误码率仿真,差分编码使用汉明码(hanming)。

1、算法描述 差分相移键控常称为二相相对调相,记作2DPSK。它不是利用载波相位的绝对数值传送数字信息,而是用前后码元的相对载波相位值传送数字信息。所谓相对载波相位是指本码元初相与前一码元初相之差。差分相移键控信号的波形如概述图所示。 假设相对…

JavaEE 初阶篇-深入了解定时器、工厂模式和比较器

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 定时器概述 2.0 实现定时器 2.1 实现定时器 - 定义 MyTask 任务类 2.2 实现定时器 - MyTimer 定时器类存放任务的方法 2.3 实现定时器 - MyTimer 定时器类读取任务…

群晖虚拟机搭建Synology Drive并实现Obsidian笔记异地多端同步

文章目录 一、简介软件特色演示: 二、使用免费群晖虚拟机搭建群晖Synology Drive服务,实现局域网同步1 安装并设置Synology Drive套件2 局域网内同步文件测试 三、内网穿透群晖Synology Drive,实现异地多端同步Windows 安装 Cpolar步骤&#…

二叉树应用——最优二叉树(Huffman树)、贪心算法—— Huffman编码

1、外部带权外部路径长度、Huffman树 从图中可以看出,深度越浅的叶子结点权重越大,深度越深的叶子结点权重越小的话,得出的带权外部路径长度越小。 Huffman树就是使得外部带权路径最小的二叉树 2、如何构造Huffman树 (1&#xf…

InternlM2

第一次作业 基础作业 进阶作业 1. hugging face下载 2. 部署 首先,从github上git clone仓库 https://github.com/InternLM/InternLM-XComposer.git然后里面的指引安装环境

鸿蒙4.2开放升级,首批公测包含24款机型,快来升级尝鲜

在今天下午刚刚结束的鸿蒙生态春季沟通会上,余承东提到了一个关于鸿蒙系统的细节,那就是目前top5000的App里,已经有4000多款App确定加入。 如此量级,预测基本能够覆盖常用的应用了,此前担心的应用生态问题也得到解决&a…

Harmony鸿蒙南向驱动开发-I3C接口使用

功能简介 I3C(Improved Inter Integrated Circuit)总线是由MIPI Alliance开发的一种简单、低成本的双向二线制同步串行总线。 I3C是两线双向串行总线,针对多个传感器从设备进行了优化,并且一次只能由一个I3C主设备控制。相比于I…

[计算机效率] 鼠标手势工具:WGestures(解放键盘的超级效率工具)

3.22 鼠标手势工具:WGestures 通过设置各种鼠标手势和操作进行绑定。当用户通过鼠标绘制出特定的鼠标手势后就会触发已经设置好的操作。有点像浏览器中的鼠标手势,通过鼠标手势操纵浏览器做一些特定的动作。这是一款强大的鼠标手势工具,可以…

Unity 布局 HorizontalLayoutGroup 多行 换行

演示Gif: 现象: 子元素宽度不同,超出父元素后不会换行 GridLayout则是固定宽度也不能用, 需求 水平排版的同时,超出父级后换行 代码: 催更就展示[狗头]

李廉洋;4.11#黄金,WTI原油#行情走势分析策略。

美国银行预计,在今天召开的欧洲央行会议上不会有重大的政策变化,但欧洲央行正逐渐接近开始降息,尽管它采取的是一种谨慎的、依赖数据的方式。虽然欧洲央行对降息轨迹的信心不断增强,但降息的具体速度和幅度仍未公布,而…

第06章 网络传输介质

6.1 本章目标 了解双绞线分类和特性了解同轴电缆分类和特性了解光纤分类和特性了解无线传输介质分类和特性 6.2 传输介质分类 现在社会还是以有线介质为主 计算机通信 - 有线通信 - 无线通信有线通信传输介质 - 双绞线 - 同轴电缆 - 光导纤维无线通信 - 卫星 - 微波 - 红外…

SpringBoot 整合RocketMQ

目录 一、引入依赖 二、配置文件 三、生产者 四、消费者 五、结果 一、引入依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.0</version> </d…

Linux网络名称空间的调试方法全面分析

Linux网络名称空间是一种广泛使用的技术&#xff0c;用于隔离网络环境&#xff0c;特别是在容器化和微服务架构中&#x1f4e6;。然而&#xff0c;随着网络名称空间的广泛应用&#xff0c;开发者和系统管理员可能会遇到需要调试网络名称空间配置和性能的情况&#x1f50d;。本文…