Resize(UBound(arr, 1), UBound(arr, 2) 这句什么意思

 
resize()是一个扩展单元格地址区域的函数,有两个参数,第一个是行扩展数,第二个是列扩展数
 
UBound(arr, 1) :arr数组中最大行数;
UBound(arr, 2) :arr数组中最大列数。
 
这里是把数组的最大行数充当了 RESIZE的行扩展,最大列数 充当了resize的列扩展数。
 
 
arr = Range(("a2:b") & Range("a6555").End(xlUp).Row)
[a2].Resize(UBound(arr), 2) = arr    '请详细解释一下这行什么意思?
 
把AB2列存入数组arr,再将arr重写入这个区域
效果就是如果原来有公式,这样就全没了,相当于粘贴数值。
 
例子1:
-------------------------------
Sub iSub()
    Dim arr
    arr = Range("a1:a7")
    For i = 1 To UBound(arr, 1)
       For j = 1 To UBound(arr, 2)
          '处理的语句
       Next
    Next
End Sub
--------------------------------
解释:
将 arr 赋值为一个数组,即 Range("a1:a7")的单元格区域内容,即一个7行1列的区域
相当于:先定义数组 arr(1 to 7 ,1 to 1),再赋值内容
 
使用UBound(arrayname[, dimension])函数,获取指定维数的上限:
UBound(arr, 1)  取得arr第一维的上限: 7
UBound(arr, 2)  取得arr第二维的上限: 1
 
用两个 for ,循环数组中的每个元素。
 
例子2:
Sub 二列数据找相同项数组法()
    Dim arr1, arr2, arr3()
    arr1 = Range("A1:A13")            '第一列数据范围
    arr2 = Range("B1:B13")            '第二列数据范围
    For i = 1 To UBound(arr1)
       For j = 1 To UBound(arr2)
           If arr1(i, 1) = arr2(j, 1) Then
              If InStr(Join(arr3, ","), arr1(i, 1)) = 0 Then
                 n = n + 1
                 ReDim Preserve arr3(1 To n)
                 arr3(n) = arr1(i, 1)
                 Exit For
              End If
           End If
       Next
    Next
   Range("d1").Resize(UBound(arr3), 1) = WorksheetFunction.Transpose(arr3)         '相同的项放在d1单元格中。
End Sub
 
Sub 二列数据找相同项字典法()
    arr1 = Range("A1:A13")        '第一列数据范围
    arr2 = Range("B1:B13")        '第二列数据范围
    Set d = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(arr1)
       d(arr1(i, 1)) = 0
    Next
    For j = 1 To UBound(arr2)
       If d.exists(arr2(j, 1)) Then d(arr2(j, 1)) = 1
    Next
    For Each d1 In d.keys
       If d(d1) = 0 Then d.Remove (d1)
    Next
   Range("f1").Resize(d.Count, 1) = WorksheetFunction.Transpose(d.keys)        '相同的项放在f1单元格。
End Sub

【转载】EXCEL VBA UBound(arr,1),UBound(arr,2)解释的更多相关文章

  1. 【转载】EXCEL VBA Workbook、Worksheet、Range的选择和操作

    Workbooks对象是Microsoft Excel 应用程序中当前打开的所有 Workbook 对象的集合.有close.add.open等方法.   Workbooks.close        ...

  2. 【转载】EXCEL VBA 工作表拆分

    用VBA拆分工作表是一个不错的方法,特别是在处理大量数据的时候,能节省不少时间.   1.高级筛选: 筛选并复制到新工作表的关键代码如下: Range("Database").Ad ...

  3. C#调用Excel VBA宏[转载]

    原文地址:https://www.cnblogs.com/heekui/archive/2008/03/30/1129355.html 近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有E ...

  4. 【转载】EXCEL VBA 选取非连续的单元格区域——Areas集合

    出处:http://www.360doc.com/content/21/1113/17/77710807_1004011085.shtml 前面我们讲的大多是**并操作单个的单元格,或者是连续的单元格 ...

  5. 【转载】EXCEL VBA 中的Range.offset和Range.resize

    在Excel VBA中range.offset和range.resize均可以重新选择区域,但range.offset表示偏移且偏移后尺寸不改变,range.resize则会根据输入的行数和列数重新定 ...

  6. excel vba 实现跨表单(sheet) 搜索 - 显示搜索行记录搜索历史

    前两天,一个朋友问我,有没有办法在excel里实现一个表单里是原始数据,在另一个表单里显示搜索到的行,搜索关键词可用~分隔开,并把搜索历史记录下来? 我想了想,用vba实现肯定可以啊,但是我又在想,有 ...

  7. Office EXCEL VBA数组如何使用

    Excel VBA数组入门教程 1. 前言:不要把VBA数组想的太神秘,它其实就是一组数字而已. 2. 数组的维数: Sub 数组示例()  Dim x As Long, y As Long  Dim ...

  8. EXCEL VBA 选择文件对话框

    Sub XXX() Dim arr() arr = Application.GetOpenFilename("所有支付文件 (*.xls;*.xlsx;*.csv),*.xls;*.xlsx ...

  9. Excel VBA入门(8): 代码调试/错误处理/代码优化

    VBE有丰富的调试工具, 比如立即窗口, 本地窗口, 监视窗口, 断点调试... 第一个博文中已经讲过调试的基本操作: 设置断点, F5运行, F8逐条运行 断点就是程序中暂停停止运行的位置, 设置断 ...

随机推荐

  1. 学习ASP.NET Core Blazor编程系列六——初始化数据

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  2. 『现学现忘』Git基础 — 35、Git中删除文件

    目录 1.删除文件说明 2.删除文件操作 (1)仅删除暂存区的文件 (2)完全删除文件 3.本文用到的命令总结 1.删除文件说明 在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态. 若要是 ...

  3. Flink WordCount入门

    下面通过一个单词统计的案例,快速上手应用 Flink,进行流处理(Streaming)和批处理(Batch) 单词统计(批处理) 引入依赖 <!--flink核心包--> <depe ...

  4. 4.MongoDB系列之索引(一)

    1. 执行计划查看 db.getCollection('users').find({'username': 'shenjian'}).explain('executionStats') 结果查看,先大 ...

  5. wpf 手指触摸图片放大缩小 设置放大缩小值

    xaml代码: <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/w ...

  6. 基于SqlSugar的开发框架循序渐进介绍(17)-- 基于CSRedis实现缓存的处理

    在一个应用系统的开发框架中,往往很多地方需要用到缓存的处理,有些地方是为了便于记录用户的数据,有些地方是为了提高系统的响应速度,如有时候我们在发送一个短信验证码的时候,可以在缓存中设置几分钟的过期时间 ...

  7. 逆向使用 execjs时遇到 UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 28: illegal multibyte sequence

    问题: 如下图所示 今天在维护以前的爬虫代码 发现有个网站一直爬取失败,我原以为是网站逆向的部分改了,搞了好久才发现是GBK的问题 接下来告诉大家解决方案 解决方案 如下图 在下图这个subbsubp ...

  8. 不用终端运行 Vue项目 基于Pycharm

    不用终端运行 Vue项目 基于Pycharm 如下图展示 接下来 然后单击右上角运行 即可完成运行

  9. java学习之spring基础

    0x00前言 spring框架应用的是ioc模式,ioc模式是指控制反转模式,本质是你不去创建对象让spring框架给你创建对象你去使用对象.多种开发模式通过配置文件和注解的方式去开发的都很值得去学习 ...

  10. XTDrone和PX4学习期间问题记录(一)

    XTDrone和PX4学习期间问题记录(一) Written By PiscesAlpaca 前言: 出现问题可以去官方网站http://ceres-solver.org/index.html查看文档 ...