vba中怎么选取二维数组中的某一行或某一列? 5

我建立一个二维数组如dima(1to9,1to9)asinteger我现在想表示这个数组的一行或一列,如matlab中的a(:,1),我不知道在vba中用什么语句实现。... 我建立一个二维数组
如 dim a( 1 to 9, 1 to 9) as integer
我现在想表示这个数组的一行或一列,如matlab中的a(:,1),我不知道在vba中用什么语句实现。
展开
 我来答
多吃蔬菜呀1
2021-04-15 · TA获得超过3320个赞
知道大有可为答主
回答量:4806
采纳率:50%
帮助的人:144万
展开全部
的方法
1.1 方法1
循环方法,固定1行/1列,另外一维循环
for arr1(i,1)

1.2 方法2
application.index() 取一维
application.index(arr1,1,0)
application.index(arr1,0,1)

2 工作表函数的index都默认从1开始
2.1 工作表函数
index 的序号默认都是从1开始,而非从0开始
用index取出来的数组,index已经从1开始了
工作表函数index ,match都是index从1开始,EXCEL本身 row column 都得从1开始

2.2 数组别忘记了你的index从0还是从1开始

Sub test001()

Dim arr1()
ReDim arr1(3, 3)

Debug.Print "不完整数组展示"
'因为你第一种显示数组只取了数组4*4中 3*3部分
For I = 1 To 3
For J = 1 To 3
arr1(I, J) = 2 * I + 3 * J
Debug.Print arr1(I, J);
Next
Debug.Print
Next
Debug.Print

Debug.Print "完整数组展示"
'这才是数组的完整内容4*4
For I = LBound(arr1) To UBound(arr1)
For J = LBound(arr1, 2) To UBound(arr1, 2)
arr1(I, J) = 2 * I + 3 * J
Debug.Print arr1(I, J) & ",";
Next
Debug.Print
Next
Debug.Print

'arr2 = Application.Transpose(Application.Index(arr1, , 1))
'arr2 = Application.Transpose(Application.Transpose(Application.Index(arr1, 1, 0)))

'为啥第0行变成了第2行?--因为你第一种显示数组只取了数组4*4中 3*3部分
'index 的序号默认都是从1开始,而非从0开始
'用index取出来的数组,index已经从1开始了
'工作表函数index ,match都是index从1开始,EXCEL本身 row column 都得从1开始

人活一辈子,就活一颗心,心好了,一切就都好了,心强大了,一切问题,都不是问题。

  人的心,虽然只有拳头般大小,当它强大的时候,其力量是无穷无尽的,可以战胜一切,当它脆弱的时候,特别容易受伤,容易多愁善感。

  心,是我们的根,是我们的本,我们要努力修炼自己的心,让它变得越来越强大,因为只有内心强大,方可治愈一切。

  没有强大的敌人,只有不够强大的自己

  人生,是一场自己和自己的较量,说到底,是自己与心的较量。如果你能够打开自己的内心,积极乐观的去生活,你会发现,生活并没有想象的那么糟糕。

  面对不容易的生活,我们要不断强大自己的内心,没人扶的时候,一定要靠自己站稳了,只要你站稳了,生活就无法将你撂倒。

  人活着要明白,这个世界,没有强大的敌人,只有不够强大的自己,如果你对现在的生活不满意,千万别抱怨,努力强大自己的内心,才是我们唯一的出路。

  只要你内心足够强大,人生就没有过不去的坎

  人生路上,坎坎坷坷,磕磕绊绊,如果你内心不够强大,那这些坎坎坷坷,磕磕绊绊,都会成为你人生路上,一道道过不去的坎,你会走得异常艰难。

  人生的坎,不好过,特别是心坎,最难过,过了这道坎,还有下道坎,过了这一关,还有下一关。面对这些关关坎坎,我们必须勇敢往前走,即使心里感到害怕,也要硬着头皮往前冲。

  人生没有过不去的坎,只要你勇敢,只要内心足够强大,一切都会过去的,不信,你回过头来看看,你已经跨过了多少坎坷,闯过了多少关。

  内心强大,是治愈一切的良方

  面对生活的不如意,面对情感的波折,面对工作上的糟心,你是否心烦意乱?是否焦躁不安?如果是,请一定要强大自己的内心,因为内心强大,是治愈一切的良方。

  当你的内心,变得足够强大,一切困难,皆可战胜,一切问题,皆可解决。心强则胜,心弱则败,很多时候,打败我们的,不是生活的不如意,也不是情感的波折,更不是工作上的糟心,而是我们内心的脆弱。

  真的,我从来不怕现实太残酷,就怕自己不够勇敢,我从来不怕生活太苦太难,就怕自己不够坚强。我相信,只要我们的内心,变得足够强大,人生就没有那么多鸡毛蒜皮。

  强大自己的内心,我们才能越活越好

  生活的美好,在于追求美好的生活,而美好的生活,源于一颗强大的内心,因为只有内心强大的人,才能消化掉各种不顺心,各种不如意,将阴霾驱散,让美好留在心中。

  心中有美好,生活才美好,心中有阳光,人生才芬芳。一颗阴暗的心,托不起一张灿烂的脸,一颗强大的心,可以美化生活,精彩人生,让我们越活越好。

  生活有点欺软怕硬,如果你内心很脆弱,生活就会打压你,甚至折磨你,如果你内心足够强大,生活就会奖励你,眷顾你,全世界都会对你和颜悦色。
庹甜恬RQ

2021-04-15 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.2万
采纳率:94%
帮助的人:377万
展开全部
1、一维数组与SUM、MAX、MIN函数
对于数值型的一维数组,可以直接使用Sum求和、Min求最小值、Max求最大值。

2、一维数组的筛选Filter
Filter是VBA的函数,所以在前面要写上 VBA.

2.1 包含"a"的数据

2.2 不包含"a"的数据

2.3 默认区分大小写

若需要不区分大小写,可使用 Option Compare Text 语句

Option Compare Text :不区分大小写

Option Compare Binary :区分大小写

Filter函数不是常常用到的,更多时候使用循环来筛选数组数据。

3、一维数组与Join函数
Join将一维数组各个元素用某个符号链接在一起, 生成一个字符串。

4、一维数组与Large、Small函数。
一维数组同样可以用Large、Small函数求最值。

返回最大值和最小值

返回第二大值和第二小值

5、二维数组和Index函数。
Index函数获取二维数组的一行或一列,生成一个新的数组,其中行是一维数组,列是二维数组。

以上函数为操作数组带来了一定的方便,但循环遍历数组是任何时候解决问题的最佳办法。

excel数据存放的位置:单元格和内存

如果数据存放再单元格中,系统计算需要两步:1,提取数据,加载到内存中;2、运算内存中的数据。而数据如直接在内存中,则可以直接进行运算,从而节省大量的时间,注意:是大量的时间。

数组:可以将一组数据存储在内存中,可以存放文本、数值、对象等。

VBA数组是以变量形式存放的一个空间。

数组分类:常量数组、静态数组和动态数组

常量数组:数组空间大小和元素均已确定

静态数组:数组空间大小已确定,但数组中的元素尚未确定

动态数组:数组的空间和元素都未确定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Pandi0604
推荐于2018-02-12
知道答主
回答量:2
采纳率:100%
帮助的人:1689
展开全部
调用index 函数

参数里0代表所有

例如:
worksheetfunction.index(arr,3,0)
代表数组arr的第三行(所有列)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
职场咨询师小陈

2021-04-15 · TA获得超过1.7万个赞
知道大有可为答主
回答量:9649
采纳率:99%
帮助的人:222万
展开全部
若二维数组a有m列,则计算任一元素a[i][j]在数组中任意位置的公式为:a[i][j] =a+(i-1)*m+j =a[0][0]+(i-1)*m+j。

二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。例如:

a[2][3]将获取数组中第 3 行第 4 个元素。

a[i][j]将获取数组中第 i+1 行第 j+1个元素,即数组中第i*m+j+1个数。

扩展资料:

二维数组的基本运算方法:

1、转置矩阵:

//其中A, B是m*n矩阵:

void tramat(matrix A,matrix B){ int i,j;

for(i=0; i<m; i++)for(j=0;j<n;j++)B[j]=A[j];}
2、矩阵相加:

//其中A,B,C是m*n矩阵:void addmat(matrix C, matrix A, matrix B){int i, j;for(i=0; i<m; i++)for(j=0;j<n;j++)c[j] = A[j] + B[j];}
3、矩阵相乘:

//其中A是m*n矩阵,B是n*1矩阵,C为m*1矩阵void mutmat(matrix C, matrix A, matrix B){int i, j, k;for(i=0; i<m; i++)for(j=0; j<i; j++){C[j]=0;for(k=0; k<n; k++)C[j] = C[j] + A[k] * B[k][j];}}
//其中A是m*n矩阵,B是n*1矩阵,C为m*1矩阵

void mutmat(matrix C, matrix A, matrix B){int i, j, k;for(i=0; i<m; i++)for(j=0; j<i; j++){C[j]=0;for(k=0; k<n; k++)C[j] = C[j] + A[k] * B[k][j];}}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
股道瘦马
2010-03-31 · TA获得超过193个赞
知道答主
回答量:64
采纳率:0%
帮助的人:43.6万
展开全部
无论赋值或取值,都只能针对数组中任一列(行)中的某一特定元素。
如对第2列所有元素赋值为3
for i=1 to 9
a(i,2)=3
next i
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式