首页 > 其他分享 >VBA中用range生成的行数组或列数组均为二维数组,转成一维方法

VBA中用range生成的行数组或列数组均为二维数组,转成一维方法

时间:2024-10-22 12:52:07浏览次数:8  
标签:VBA 数组 转置 arr 二维 一维 range

在excel中用range方法生成的行或列数组均为二维数组,

1、行数组。如arr=sheet1.range("a1:c1"),这是一行三列的二维数组,用arr(1,1)、arr(1,2)、arr(1,3)均能获取数据,但如用arr(1)、arr(2)、arr(3)获取数组就会出错,提示“下标越界",若用arr(1,1)就会取到数据,所以用range生成的行数组是二维数组。具体情况可查看本地窗口,窗口中会显示arr是一行三列数组

2、列数组

如arr=sheet1.range("a1:a3"),这是三行一列的二维数组,用arr(1,1)、arr(2,1)、arr(3,1)均能获取数据,但如用arr(1)、arr(2)、arr(3)获取数组就会出错,提示“下标越界",若用arr(1,1)就会取到数据,所以用range生成的列数组是二维数组。具体情况可查看本地窗口,窗口中会显示arr是三行一列数组

3、range方法生成的二维行或列数组转成一维数组方法

(1)通用方法:用index函数

index函数参数格式,Index(arr,row,column)

当row=0时,表示arr二维数组把第column列的数据生成一组数组,当column=0时,表示arr二维数组把row行数据生成一维数组。index是worksheetFunction中的函数,故需加上库引用,把上例的行数组生成一维数组,如 WorksheetFunction.Index(arr, 1, 0) ,由于arr中只有一行数据,故row位置取1,column=0,代表column 按数组中的数据取,这样就生成了一维数据,同理,列数组生成一维数组如下:WorksheetFunction.Index(arr, 0, 1)

(2)列数组转置成一维行数

不用通用的index函数,也可用transpose()函数,该函数参数格式,transpose(arr),即可把列数组转成一维行数组。这里说的是转置,它对列数组,转置后可生成一维行数组,但它转置行数组时,转置后的列数组仍为二维数组。

列数组转置成一维行数组,arr=worksheetFunction.Transpose(arr),此时arr成了一维数组了。如再把一维转成列数组,转置后一定是二维列数组,如上面再来一次,arr=worksheetFunction.Transpose(arr),此时arr成一二维列数组。

标签:VBA,数组,转置,arr,二维,一维,range
From: https://blog.csdn.net/weixin_43213909/article/details/143147102

相关文章

  • VBA中的基础知识:类型判别及定义
    变量类型 用TypeName()函数可以判断变量类型。TypeName(i)="Single"就是单精度浮点数TypeName(i)="String"就是字符串 另外IsNumeric判断变量的值是否为数值isdate判断变量的值是否为日期isnull判断变量的值是否包含任何有效数据isempty判断变量的值是否为空......
  • 华为od面试手撕代码真题题型1——常规字符串,数组,矩阵
    常规字符串,数组,矩阵1实现超长数字减1思路:Java中用BigInteger类publicStringsubOne(Strings){ BigIntegerbi=newBigInteger(s);bi=bi.subtract(BigInteger.ONE);returnbi.toString();}2十八进制数比较大小任意进制的字符串a,转成十进制的数:In......
  • 用 (Excel) VBA 读取 OneNote!
    本文记录,用VBA读取OneNote的方法,这块似乎一直是空白,研究了好久才找到解决方案!小白贡献,语失莫怪!问题背景:我在OneNote里有上百篇笔记,可OneNote自己,却无法导出全部的标题。于是我千方百计,想要读取OneNote的文件,来获取标题和日志信息。尝试了各种方案,都没能读出OneNot......
  • 将有序数组转换为二叉搜索树
    给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。示例1:输入:nums=[-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9]也将被视为正确答案:示例2:输入:nums=[1,3]输出:[3,1]解释:[1,null,3]和[3......
  • Day21数组的声明和创建
    Day21数组的声明和创建数组声明创建:首先必须声明数组变量才能在程序中使用数组。声明数组变量的语法有两种:“dataType[]arrayRefVar;”(首选方法);或“dataTypearrayRefVar[];”(效果相同,但不是首选方法)。Java语言使用new操作符来创建数组,语法为dataType[]arra......
  • 数组的概念(C++)
        今天介绍一下数组。在C++中,数组就是一种用于存储相同类型元素的容器,也是一种数据结构,在编程中被广泛使用。一、定义与组成    数组是由相同类型的元素组成的集合,这些元素在内存中是连续存储的。例如,一个整数数组可以存储多个整数,一个字符数组可以存储......
  • 【java】实现字节数组转int(采用IEEE 754标准)
    /***字节数组转int*采用IEEE754标准**@parambytes*@returnfloat*/publicintbytesToInt(byte[]bytes){//获取字节数组转化成的2进制字符串StringbinaryStr=bytesToBinaryStr(bytes);//......
  • 代码随想录算法训练营第六天| leetcode242.有效的字母异位词、leetcode349.两个数组的
    1.leetcode242.有效的字母异位词题目链接:242.有效的字母异位词-力扣(LeetCode)文章链接:代码随想录视频链接:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词_哔哩哔哩_bilibili自己的思路:首先就是对字符串进行分开成一个一个单独的字母,然后使用列表存储这些数据,再对......
  • 数组的往返(数组来回遍历)C语言版
    文章目录前言题目描述一、数组的往返是什么?二、实现1.具体代码2.完整题解代码总结以及一些疑问前言本篇文章灵感来源于第十三届蓝桥杯省赛C++B组第六题修剪灌木,我的方法是老老实实地走完这个流程得到答案题目描述爱丽丝要完成一项修剪灌木的工作。有N棵灌......
  • [LeetCode] 910. Smallest Range II
    Youaregivenanintegerarraynumsandanintegerk.Foreachindexiwhere0<=i<nums.length,changenums[i]tobeeithernums[i]+kornums[i]-k.Thescoreofnumsisthedifferencebetweenthemaximumandminimumelementsinnums.Returnt......