精华内容
下载资源
问答
  • 大家好,我们今日继续VBA数组与字典解决方案,今日讲解VBA数组的声明,一些朋友会问了:数组都讲了这么长时间了,怎么才讲声明啊?是的,有些知识不到一定的程度即使讲了,大家也不能深入的理解,只有到了一定的程度...

    大家好,我们今日继续VBA数组与字典解决方案,今日讲解VBA数组的声明,一些朋友会问了:数组都讲了这么长时间了,怎么才讲声明啊?是的,有些知识不到一定的程度即使讲了,大家也不能深入的理解,只有到了一定的程度,再次讲解,大家才能有真正的收获。

    一 我们先看看下面的声明方法

    1 Dim arr as Variant

    2 Dim arr(1 to 10, 1 to 2 )

    3 dim arr()

    4 ReDim arr(1 To k)

    我们分析一下各种声明方法:

    第一种:声明通常用于单元格直接装入数组如:

    arr =range("a9:c100")

    这种装入非常简单,直接用变量 = 单元格区域即可。但是这里要注意的是对于这种写入时数组的声明只能是:

    Dim arr as Variant

    这时,声明一个变量,不能声明其他数据类型。

    第二种:通常用于一个固定数组的声明,同时给出了数组的上下界。这种声明要注意的是不能一次性的装入单元格的数据,要靠循环

    第三种,是一个动态数组的声明,也就是说,我们在命名数组时还不知道数组的大小,要靠后期的再次定义

    第四种 是再次声明arr的大小,以正好盛下k数量的值。

    二 把单元格数据填入数组和数组数据的回填

    我们利用数组就是为了计算,下面我们看看把工作表中的数据填入数组,及计算后数组数据回填给工作表单元格的方法,看我给出的代码:

    Sub MyNZsz_31() '第31讲 数组的声明及赋值的回填

    Dim arr As Variant '注意此处的Variant

    Dim brr() '注意此处定义了一个动态数组

    Sheets("31").Select

    arr = Sheets("31").UsedRange 'Usedrange的行数和列数是未知的

    MsgBox UBound(arr, 1) '可以计算这个区域有多少行

    MsgBox UBound(arr, 2) '可以计算出这个区域有多少列

    ReDim brr(1 To UBound(arr, 1), 1 To UBound(arr, 2))

    For x = 1 To UBound(arr, 1) '通过循环在arr数组中循环

    For y = 1 To UBound(arr, 2)

    brr(x, y) = arr(x, y) * arr(x, y) '数组自身相乘

    Next

    Next

    '把数组放回到单元格中

    Range("A" & Range("A1").End(xlDown).Row + 2).Resize(UBound(arr, 1), UBound(arr, 2)) = brr

    End Sub

    代码截图:

    7c927a56883c05378682671c52875469.png

    代码的讲解:此代码在代码部分我都做了详细的注释,不再一一讲解了,仅看看下面的这句代码:

    Range("A" & Range("A1").End(xlDown).Row + 2).Resize(UBound(arr, 1), UBound(arr, 2)) = brr

    这句设定了数组回填的区域大小,注意这个区域必须和数组的大小要一致,不然会产生错误。所以我利用了Resize(UBound(arr, 1), UBound(arr, 2))来保证这一点。

    下面我们看代码的运行:

    运行前:

    36d59c741f435efca210bdb398b80d4c.png

    运行,先提示行数:

    48ade9ba4a43cc996711a9a1ee2c3dea.png

    再提示列数:

    260c4f63a5b4a8662f618b02556775be.png

    最后看结果:

    49eebd8fb64156b50c08089d1cf7169f.png

    今日内容回向:

    1 如何给数组声明?

    2 上述实例如果再次运行一下会有什么结果呢?

    展开全文
  • 大家好,我们今日继续讲解VBA数组与字典解决方案,今日讲解第18讲:VBA数组如何定义,又该如何创建呢?从这一讲开始,我们开始进入VBA数组阶段,VBA数组和工作表数组有着不同的意义,在很大程度上,工作表数组的运算...

    大家好,我们今日继续讲解VBA数组与字典解决方案,今日讲解第18讲:VBA数组如何定义,又该如何创建呢?

    从这一讲开始,我们开始进入VBA数组阶段,VBA数组和工作表数组有着不同的意义,在很大程度上,工作表数组的运算甚至可以看做是程序的运行,能够理解工作表数组的运算过程对于VBA代码的书写是非常有益的,但VBA数组在大多数情况下,只是作为变量来存储数据。这点和工作表数组有很大的不同。

    一、什么是VBA数组 所谓VBA数组,就是共享一个名字,有着多个元素按顺序排列的变量。数组中的数据具有相同的类型和结构,元素通过索引加以区分。这里我把数组的元素看做变量来对待,大家要注意,这个观点在应用过程中是非常有意义的。

    二、如何定义数组 数组在使用前必须要进行声明,声名数组同声明其他变量的方式一样,也是用Dim语句来声明。唯一不同的是数组有大小,即有多少个元素,或者说变量,还有就是要说明数组的维数。一般情况下使用较多的是一维数组和两维数组,需要注意的是数组要以字母开头,所用的字符仅限字母、数字和下下划线,不允许出现标点符号和空格。当声明了一个数组,便决定了这个数组用于存储数数据所用的内存空间。

    默认情况下数组是以0为下届,也就是Option Base 0大多数情况下我们都是遵守此默认情况的,并且在用数组时忽略数组的第一个元素,上届不能超过LONG数据类型的范围,而且上届值不能小于下届值。

    如果我们习惯了用1作为我们的下界,可以强制声明:Option Base 1,需要注意的是Option Base 0(1)必须放在所有模块之前。当然,我们也可以忽略这个强制声明,那我们就需要在声明数组时,指明数组的上界和下界,如:Dim arrSheetName(1 to 3) as String表明这个数组的上下界分别是1和3

    下面我们讲通过一个实例来说明数组的声明及赋值,如下面的代码:

    Sub Mynzsz() '第18讲 VBA数组的定义及创建

    Dim i As Integer, j As Integer

    Dim arr(1 To 10, 1 To 2) As Integer '定义一个10*2的二维数组(10行,2列)

    j = 1 '数组1 to 10的索引号

    For i = 1 To 20 Step 2

    arr(j, 1) = i '赋值

    arr(j, 2) = i + 1 '赋值

    j = j + 1 '索引号增加

    Next

    [a1:b65536].ClearContents '清除原有数据

    [a1].Resize(10, 2) = arr '将数组赋值给A1单元格向下10行,向右2列的区域

    End Sub

    代码截图:

    fcaf3280358e9d8aad15a84ec88b01e3.png

    代码讲解:

    1 Dim arr(1 To 10, 1 To 2) As Integer 这里给出了数组的范围最小的是arr(1, 1),最大的是

    arr(10, 2)

    2 [a1].Resize(10, 2) = arr 讲数组回填给工作表。大家是否理解arr的意义呢?我们看看下面的图:

    8c8b5f10fce371e2000445cf924113dd.png

    arr 是一个集合。这个集合包括了20个元素(或者叫变量),分别是arr(1,1);arr(2,1);arr(1,2);arr(2,2);arr(1,3);arr(2,3);arr(1,4);arr(2,4);arr(1,5);arr(2,5);arr(1,6);arr(2,6);arr(1,7);arr(2,7);arr(1,8);arr(2,8);arr(1,9);arr(2,9);arr(1,10);arr(2,10)

    运行后:

    b6bb660f845cbcfef4a128243ffb88c2.png

    今日内容回向:

    1 什么是VBA数组。

    2 VBA数组如何声明?

    展开全文
  • 各位好,从今日开始,在平台上我将推出VBA解决方案系列丛书的第三部:VBA数组与字典解决方案,这套书从工作表数组开始讲解,逐渐过渡到VBA数组和VBA字典,在这部教程中,大家会看到VBA数组、字典在各种实际工作场景...

    1b767b7675202b1c4c41c67d55d0d78a.png

    各位好,从今日开始,在平台上我将推出VBA解决方案系列丛书的第三部:VBA数组与字典解决方案,这套书从工作表数组开始讲解,逐渐过渡到VBA数组和VBA字典,在这部教程中,大家会看到VBA数组、字典在各种实际工作场景中针对各种问题中的解决方案。

    第1讲 什么是函数,什么是公式,什么是数组,什么是数组公式

    大家好,本书的内容是VBA数组与字典解决方案,今日讲第1讲,先给大家讲解的是EXCEL数组的应用内容,先给大家剖析几个概念,什么是函数、什么是数组、什么是公式、什么是数组公式。这些概念很抽象,掌握这些概念的实质,可以让我们理解到很多公式的书写以及VBA程序的变量意义。

    一 什么是函数,什么是公式,什么是数组,什么是数组公式:

    1函数的概念:这个概念我已经讲过多次了,在多个平台的开篇都会讲这个概念:如果对于唯一性输入值value,输出(或者return)的值也具有唯一性(这种输入或者输出的值没有个数的限制),那么具有这种变化关系的输入和输出关系,就称为输出是输入的函数.

    2 EXCEL公式: 是EXCEL工作表中进行数值计算的等式。公式输入是以“=”开始的。简单的公式有加、减、乘、除等。

    3数组:所谓数组,就是单元集合或是一组处理值的集合。数组可分为一维数组,二维数组等等。

    4 数组公式:所谓数组公式,就是以数组为参数的公式,能通过这个单一的公式,执行多个输入的操作并产生多个结果——每个结果显示在不同的单元中。数组公式是对一组或多组值执行多重计算,并返回一个或多个结果。

    二 函数、公式、数组的区别和联系

    1 函数与公式的联系:

    a) 既有区别又互相联系:公式是一种大范围的总称,它要以等号“=”开始,其内部可以包括函数、引用、运算符和常量;

    b) EXCEL函数(或者称工作表函数)是预先定义好的公式,不要读者自己再书写了。函数的组合,是讲两个或多个已经预定义好的公式相组合起来,完成某种特定的作用或功能。

    2 数组公式的特点:

    a) 数组公式可以认为是Excel中公式和数组的一种扩充形式,换一句话说,是Excel公式在以数组为参数时的一种应用。

    b) 数组公式可以看成是有多重数值的公式。与单值公式的不同之处在于它可以产生一个或一个以上的结果。一个数组公式可以占用一个或多个单元。数组的元素可多达6500个。

    c) Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。

    d) 数组公式的参数是数组,即输入有多个值;输出结果可能是一个,也可能是多个。这一个或多个值是公式对多重输入进行复合运算后而得到的新数组中的元素

    e) 引用了数组(可以是一个或多个数值,或是一组或多组数值),并在编辑栏可以看到以“{}”括起来的公式就是数组公式。而数组公式的作用就是对一组(单个数据可以看成是一组)、多组数据进行处理,然后得到想要的结果。

    F) 数组公式的录入以Ctrl+Shift+Enter结束;工作表函数以Enter结束

    三:实例的讲解说明:如下工作表,我们需要计算出下面截图的总金额数。我们选中B5单元格,录入公式:=SUM(B2:F2*B3:F3) ,这个时候我们按下ENTER键结果如下面的图:

    72315f12efa1bad8ab7d943673b1990a.png

    如果我们按下:按下Ctrl+Shift+Enter 快捷键如下面的截图,就是数组公式的录入了:

    5fd18ff0158ddcfe8cb46c1c080929e7.png

    今日内容回向:

    1 什么是函数,什么是公式?

    2 什么是数组?什么是数组公式?

    3 函数和公式的区别是什么?

    展开全文
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解的是第34讲:数组的传递。在应用数组的时候,我们往往需要要把数组的值由一个数组传递给另外一个数组,就如同变量的传递一样:A=B '把B值赋给AC=A '把A值赋...

    大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解的是第34讲:数组的传递。在应用数组的时候,我们往往需要要把数组的值由一个数组传递给另外一个数组,就如同变量的传递一样:

    A=B '把B值赋给A

    C=A '把A值赋给C

    如上例,就完成了把值的传递的过程,分别把B的值传递给了A;把A的值传递了B,那么数组是否也可以呢?我们看下面的数组传递:

    下面看我给出的代码:

    Sub MyNZsz_34() '第34讲 如何把一个固定数组的值传递给另外一个数组

    '直接赋值是不对的

    Sheets("34").Select

    Dim arr1(1) As Integer '定义一个一维固定数组arr1(1)

    Dim arr2(1) As Integer '定义一个一维固定数组arr2(1)

    arr1(0) = 1 '给arr1(1) 的数组元素0赋值为1

    arr1(1) = 2 '给arr1(1) 的数组元素0赋值为2

    arr2 = arr1 '讲数组1传递给数组2

    MsgBox (arr2(1)) '提示数组2的元素1的值

    End Sub

    上述代码的过程要完成的是首先定义两个一维数组arr1(1)和 arr2(1);然后先给其中的一个数组arr1(1)赋值,这个数组共用两个元素分别赋值为1,2;然后我们用普通变量赋值的方法把数组arr1(1)赋值给arr2(1);最后提示数组2的元素1的值,那么是否会弹出对话框提示为1呢?

    我们看看代码的截图和代码的运行:

    1 代码截图

    209ac31413f821bdb132900b7a656f9c.png

    2 运行截图:

    95310fd72288efd7f81c553ae5ad18a4.png

    这个时候会提示我们不能这样给数组赋值。由此我们可以看出:对于给定的2 个静态数组不能相互赋值,否则将出现编译错误:不能给数组赋值。

    那么要如何完成数组的值由一个数组传递给另外一个数组呢?常用的方法:①将静态数组赋值给动态数组②将静态数组赋值给一个变体变量③再有就是循环的方法。对于循环的方案比较简单,不再多说,这里着重讲解前两个方法。

    对于动态数组我们在之前的讲解中已经讲了很多了,对于变量体大家要加强理解:数组可以用Variant 变体变量获取一组单元格的值,公式等,当不包括单元格地址。大家要理解Variant 变体变量的意义,当使用数组的这种赋值方法的时候一定要定义这个变量为Variant 变体变量。

    对于上面给出的代码,我下面修正:

    Sub MyNZsz_34_1() '第34讲 如何把一个固定数组的值传递给另外一个数组

    '直接赋值是不对的

    Sheets("34").Select

    Dim arr1(1) As Integer '定义一个一维固定数组arr1(1)

    Dim arr3() As Integer

    Dim arr4 As Variant

    arr1(0) = 1 '给arr1(1) 的数组元素0赋值为1

    arr1(1) = 2 '给arr1(1) 的数组元素0赋值为2

    ReDim arr3(1)

    arr3 = arr1 '讲数组1传递给数组2

    arr4 = arr1

    MsgBox "动态数组赋值后:" & arr3(1) '提示数组3的元素1的值

    MsgBox "Variant赋值后:" & arr4(1) '提示数组4的元素1的值

    End Sub

    下面看代码的截图;

    d45b4df06747b99a5e5c87398637b563.png

    代码的运行:

    37494bc5dba881d65016ac45b9f654fb.png
    ede314d0143adab9e986ac4b2d26000a.png

    今日内容回向:

    1 数组的值如何传递?

    2 如何理解变体变量?

    展开全文
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第53讲:提取字典ITEM值的方案比较.任何一个对象的引入都有其自身的特点,我们在应用的时候要根据这种对象自身的特点和实际需要灵活运用。今日要给大家讲解...
  • 大家好,今天我们继续讲解VBA数组与字典解决方案,今日的内容是第2讲:数组公式的标识及数组的维数。在讲数组专题的时候,有的章节比较简单,有的章节比较难懂。希望大家在利用的时候要仔细的体会。一 :数组公式的...
  • 各位好,从今日开始,在平台上将讲解VBA解决方案系列丛书第三部:VBA数组与字典解决方案,这套书从工作表数组开始讲解,逐渐过渡到VBA数组和VBA字典,在这部教程中,大家会看到VBA数组、字典在各种实际工作场景中...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第54讲内容:利用字典和数组,提取C列相同但B列不相同的数据,回填时按行分开。其实字典本身就是一个数组,一个看视很简单的数组,有两个元素KEYS和ITEMS,...
  • 大家好,我们今天继续讲解VBA数组与字典解决方案,今日的内容是第41讲,在利用字典时,精准控制字典键值回填的方法。通过我前几讲的讲解,大家发现了字典利用的妙处,这种妙处往往是不可说的,给我们的工作带来了极...
  • 朋友们好,今日给大家继续讲解VBA数组与字典解决方案的第17讲,数组大小的扩充问题。这一讲的内容相对比较简单,在之前的章节中讲了数组与数组的计算规律,也是利用了数组的扩展原理。其实,两个数组计算时,参与...
  • 大家好,我们今日继续VBA数组与字典解决方案,今日讲解VBA数组的声明,一些朋友会问了:数组都讲了这么长时间了,怎么才讲声明啊?是的,有些知识不到一定的程度即使讲了,大家也不能深入的理解,只有到了一定的程度...
  • 各位好,从今日开始,在平台上我将推出VBA解决方案系列丛书的第三部:VBA数组与字典解决方案,这套书从工作表数组开始讲解,逐渐过渡到VBA数组和VBA字典,在这部教程中,大家会看到VBA数组、字典在各种实际工作场景...
  • 大家好,我们今天继续讲解VBA数组与字典解决方案,今日的内容是第43讲,将数组数据拆分后合并,作为字典的键,实现多条件的数据汇总。在进入字典的讲解后,我给大家讲各种实际情况中利用字典的解决方案,让大家逐渐...
  • 大家好,我们今日继续讲解VBA数组与字典解决方案第37讲内容:在VBA中字典的应用。对于字典,也许许多的朋友对此比较陌生,在有的语言里字典也称之为MAP,应用也是比较广泛的。字典,其实就是一些“键-值”对。使用...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案的第19讲:动态数组的定义及创建。在VBA中,数组可分为固定数组和动态数组,也称为静态数组和动态数组。我们之前所定义的数组,都是静态数组。静态数组的特点是具有...
  • 大家好,今天我们继续讲解VBA数组与字典解决方案,今日的内容是第2讲:数组公式的标识及数组的维数。在讲数组专题的时候,有的章节比较简单,有的章节比较难懂。希望大家在利用的时候要仔细的体会。一 :数组公式的...
  • 大家好,我们今天继续讲解VBA数组与字典解决方案,今日的内容是第44讲,利用字典来判断数组的值是否重复,并提取出不重复的值。对于字典的应用,排重是很普遍的应用之一。对于数组的排重,如果单用数组的内容,在我...
  • 大家好,我们今日继续讲解VBA数组与字典解决方案第37讲内容:在VBA中字典的应用。对于字典,也许许多的朋友对此比较陌生,在有的语言里字典也称之为MAP,应用也是比较广泛的。字典,其实就是一些“键-值”对。使用...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第50讲:结合数组,在VBA中实现冒泡排序。对于排序,我们并不陌生,在之前的章节用也有介绍, 如在49讲中我们利用下面的代码实现了三重排序:Range("A1:C" &...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日的内容是第58讲,利用工作表函数,对字典的键进行排序,并给出对应的重复个数。对于排序,大家并不陌生,在之前的讲解中,我也讲了利用sort进行排序的方法。今日...
  • 大家好,今日继续讲解VBA数组与字典解决方案专题第14讲,今日讲的是单列数组与单行数组间的运算规则。关于工作表数组的运算规则,之前我们讲过行列数相同数组的运算规则及一个数组与单一的数值间的运算规则,不知道...
  • 大家好,今天我们继续讲解VBA数组与字典解决方案,今日的内容是第2讲:数组公式的标识及数组的维数。在讲数组专题的时候,有的章节比较简单,有的章节比较难懂。希望大家在利用的时候要仔细的体会。一 :数组公式的...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第50讲:结合数组,在VBA中实现冒泡排序。对于排序,我们并不陌生,在之前的章节用也有介绍, 如在49讲中我们利用下面的代码实现了三重排序:Range("A1:C" &...
  • 大家好,今日继续讲解VBA数组与字典解决方案的第23讲,利用动态数组排重提示错误的解决办法。这讲的内容和上一讲的内容是相关联的,在上一讲的回向中,我提到了上一讲的代码中启动了错误处理程序来忽略一处错误,这...
  • VBA数组与字典解决方案第7讲:为什么要采用数组公式(一)今日继续讲解VBA数组与字典解决方案第7讲,在前几讲的数组应用中我们深入地讲解了工作表数组和数组公式,以及数组维数扩展的意义。那么,有的朋友会问了:...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第50讲:结合数组,在VBA中实现冒泡排序。对于排序,我们并不陌生,在之前的章节用也有介绍, 如在49讲中我们利用下面的代码实现了三重排序:Range("A1:C" &...
  • 大家好,今天我们继续讲解VBA数组与字典解决方案,今日的内容是第2讲:数组公式的标识及数组的维数。在讲数组专题的时候,有的章节比较简单,有的章节比较难懂。希望大家在利用的时候要仔细的体会。一 :数组公式的...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 205
精华内容 82
关键字:

vba数组与字典解决方案