VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

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

教程共两册,二十个专题。今日分享内容是:VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组2790fabbaa500d19e957f819b631fbcc.jpeg

【分享成果,随喜正能量】得失随缘,心无增减。生活,不论如何都会过去,不会永远甜,也不会永远苦,用一颗随遇而安的心态去生活,该吃饭吃饭,该睡觉睡觉,醒来便是重生。。

专题四 EXCEL工作表数据的读取、回填和查找

这个专题,我们讲解工作表数据的处理的问题,对于VBA而言,我给予的定位是“实现个人小型数据自动化处理的利器”,对于大多数朋友而言,利用VBA是与EXCEL相关联的,很多的代码也是用于处理EXCEL内或者相关的各种数据,工作表更是作为和用户的交互对象而存在,那么对于工作表的数据如何进行查找,以及如何读取就是一个十分关键的课题,我们这讲就来主要讲解这个问题。

ece818ff8da477134239340e426aef1b.jpeg

第二节 将工作表数据写入VBA数组

在上一节中我们讲了实现工作表数据与VBA代码间传输的几种方法,这讲我将我们将着重讲解如何将工作表的数据写入数组。

1 读取工作表上的范围并将其放入数组

在VBA中,可以直接读取工作表上的范围并将其放入数组,这种方法非常简单。例如,

Dim Arr() As Variant

Arr = Range("A1:C5")

上述代码中首先声明一个变体型可变数组变量,然后将这个变量指向指定的区域,如果我们不能确定这个区域的大小,或者这个区域是可变的,我们可以利用下面的语句;

① myarr = Sheets("41").UsedRange

② myarr = Sheets("40").[a1].CurrentRegion

③ myarr = Range("a2:c" & Range("c2").End(xlDown).row)

④ myarr = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).row)

⑤ myarr = Range("a2:f" & [a65536].End(xlUp).Row)

⑥ myarr1 = Range([A2], [A65536].End(xlUp))

上面的各种写法均是我的第三套教程《VBA数组与字典解决方案》中的一些实际写法,第一种表示整个工作表的使用区域,第二种是以“A1”单元格为起点的矩形区域,第三种是表示A2到C列最后一个不为空的单元格的矩形区域,第四种是表示A列的使用区域(含空格),第五种是A2到F列的最后使用单元格的区域(适用于低版本的excel),第六种是A列第二个单元格之下的使用区域(含空单元格)

2 读取工作表上指定范围获得数组后维数的确认

利用上述方案将工作表中的数据引入VBA数组后,我们要注意该数组始终是二维的。第一个维度是行,第二个维度是列。因此,下面的例子:

Dim Arr() As Variant

Arr = Range("A1:C5")

Arr被隐式地调整为Arr(1 to 5,1 to 3),其中5是行数,3是列数。即使工作表数据位于一行或一列(例如,Arr(1 to 10,1 to 1))中,也会创建二维数组。加载工作表数据的数组始终具有等于1的下限(LBound),而不管模块中可能具有什么选项基指令。你不能改变这种行为。例如:

Dim Arr() As Variant

Arr = Range("A1:A10")

这里,Arr由VBA自动标注为Arr(1 to 10,1 to 1)。您可以使用如下代码在工作表值数组中循环:

Sub MYNZC()

Dim Arr() As Variant

Arr = Range("A1:B10")

Dim R As Long

Dim C As Long

For R = 1 To UBound(Arr, 1) ' 数组第一维表示行.

For C = 1 To UBound(Arr, 2) '数组第二维表示列

Debug.Print Arr(R, C)

Next

Next

End Sub

代码截图:

a147d46cb560199ce8e522df7b900c89.jpeg

代码的运行:

33abaf3c445f7ea2f045ba1b1a7fd574.jpeg

3 工作表上指定范围如果是一个单元格时

代码的运行:

7b7a12c39355f6eb10e21d3ff1d1eb5a.jpeg

上面的代码成功的避免了这种错误。大家在利用这种数组赋值时避免这类错误的发生。

本节知识点回向:读取指定范围的数据到数组有哪些方法可以利用?读取后的数组是几维数组?如何避免指定范围只有一个单元格的情况?

本专题参考程序文件:004工作表.XLSM

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

d158988f302d22def1da8be6ab049a4d.jpeg

aada174aaa532a3b5a8454551539e099.jpeg

b7b7bccb1525e432dc96123c449e4dda.jpeg



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

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

相关文章

Linux安装Cuda和多个Cuda版本切换

解决的问题:服务器上跑深度学习代码,通常都需要用到Cuda。有时候跑的不同程序要求的配置Cuda版本可能也不同,会需要不同Cuda版本的替换。 Linux安装Cuda CUDA官网,下载安装,网址为:https://developer.nvi…

云渲染特效广告一秒费用预估是多少?

在计算云渲染特效广告每秒钟的费用时,我们需要综合考虑多个关键因素,包括特效的复杂性、所需的渲染计算能力以及对渲染质量的具体要求。通常情况下,影视特效级别的广告因其场景极其复杂,每帧渲染所需时间较长,从而导致…

【计算机组成原理统考历年真题解析】2010年真题

1. 下列选项中,能缩短程序执行时间的措施是: I.提高CPU时钟频率 II.优化数据通路结构 III,对程序进行编译优化 A.仅I和II B.仅I和III C.仅II和III D.I、II和III D 2. 假定有4个整数用8位补码分别表示为 r1FEH,r2F2H,r390H,r4F…

一、理论基础-PSI

之前参加了隐语第2期,对隐语SecretFlow框架有了大致的了解,这次参加隐语第4期,学习下PSI和PIR。 一、PSI定义 首先介绍PSI的定义,PSI(隐私集合求交,Private Set Intersection即PSI)是安全多方计算&#x…

php 系统函数 记录

PHP intval() 函数 PHP函数介绍—array_key_exists(): 检查数组中是否存在特定键名 如何使用PHP中的parse_url函数解析URL PHP is_array()函数详解,PHP判断是否为数组 PHP函数介绍:in_array()函数 strpos定义和用法 strpos() 函数查找字符串在另一字符串…

数据挖掘之回归算法

引言 回归分析是数据挖掘中最常见的技术之一,它用于建立自变量(或称特征)与因变量(或目标变量)之间的数学关系。回归模型不仅在统计学中占据重要地位,也广泛应用于预测、优化、风险管理等各个领域。在数据…

鸿蒙DevEco Profiler无法识别设备

一、问题 DevEco Studio运行项目处可以识别到设备信息,但是Profiler工具无法识别 二、背景知识 注意 DevEco Profiler工具不支持模拟器进行调优。macOS 12及以上系统版本支持使用DevEco Profiler工具。 知识来源:文档中心 三、解决方案 重启DevEco …

网上商城系统设计与实现

文末获取源码和万字论文,制作不易,感谢点赞支持。 题目:网上商城系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理…

微服务的熔断、限流和降级

1 服务问题 系统的运行是避免不了问题的产生,而服务问题可以从如下两个角度来分析: 服务系统问题:如机器宕机、网络、机房故障,虽然这个是有问题但概率很小,在面试的时候简单提即可。服务程序问题:如业务响…

C++ 哈希表、unordered_map 和 unordered_set 的实现

哈希表(Hash Table)是一种常用的数据结构,它能够以接近常数时间复杂度的效率完成插入、删除和查找操作。在现代编程中,标准模板库(STL)提供了 unordered_map 和 unordered_set,它们都是基于哈希…

多行为推荐-KBS 24|基于HyperGRU对比网络的短视频推荐多行为序列建模

论文:https://www.sciencedirect.com/science/article/abs/pii/S0950705124004751?via%3Dihub 关键词:短视频推荐,多行为推荐,对比学习,RNN 1 动机 这是我第一次看短视频推荐里涉及到多行为的论文,动机还…

【AI系统】ESPNet 系列

ESPNet 系列 本文将会介绍 ESPNet 系列,该网络主要应用在高分辨率图像下的语义分割,在计算内存占用、功耗方面都非常高效,重点介绍一种高效的空间金字塔卷积模块(ESP Module);而在 ESPNet V2 上则是会更进…

基于vpk180边缘场景下分布式神经网络训练模型部署

本项目目标在于针对边缘场景实现P2P的分布式训练过程,设计方案为将神经网络训练过程对应的裸机程序部署在了PS端的ARM Cortex-A72核上,传输方案采用开发板板载的GTM收发器硬件资源通过外部QSFP-DD光模块光传输至对端,最终完成了设计目标。 整…

ros项目dual_arm_pick-place(urdf文件可视化查看)

前言 一直想写一些项目的讲解,今天(2024.12.05)可以说正式开始了。 dual_arm_pick-place项目,是关于两个机械臂协同传递物品。 正文 这次的话,给大家讲一下里面的urdf文件。 这篇文章主要来看一下项目中的urdf文件…

spring boot 配置文件加载的加载和使用

文章目录 添加配置信息使用ConfigurationProperties注入属性使用Value注入属性两种方式对比分析自定义配置添加自定义配置加载并使用配置信息 添加配置信息 在实际开发中,应用程序的配置文件可能会变得非常复杂,属性的数量也会很多。为了更好地组织和管…

17. Threejs案例-Three.js创建多个立方体

17. Threejs案例-Three.js创建多个立方体 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染 WebGL 场景的核心类。它负责将场景中的对象渲染到画布上。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选…

QNX的内存布局和启动入口

参考资料: QNX官网文档 内存布局 添加图片注释,不超过 140 字(可选) 查看系统内存布局 # pidin syspage=asinfo Header size=0x00000108, Total Size=0x0000d1b0, #Cpu=8, Type=257 Section:asinfo offset:0x0000bdf0 size:0x00000d00 elsize:0x000000200000

【成功解决】:VS2019(Visual Studio 2019)遇到E2870问题:此配置中不支持 128 位浮点类型

起因:项目中需要用json来操作数据,就引了cJSON库(cJSON.h和cJSON.c文件),但是发现编译报错如下 E2870 此配置中不支持 128 位浮点类型 test0 ...\usr\include\x86_64-linux-gnu\bits\floatn.h 75 然后先新建了个工程来检查问题(甚至在这之前还以为是cjson…

【LeetCode】122.买卖股票的最佳时机II

文章目录 题目链接:题目描述:解题思路一(贪心算法):解体思路二(动态规划): 题目链接: 122.买卖股票的最佳时机II 题目描述: 解题思路一(贪心算法…

【源码解读】SpringMMVC执行流程

直接进入主题,当我们执行一条请求的时候,是会进入到org.springframework.web.servlet.DispatcherServlet类的doDispatch方法中 这个方法是从HandleMapping中获取对应的Handle 其实就是得到我们需要执行的某个方法 接下来判断这个mapperhandle是否为空 如…