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. Struts中action访问不到的原因。

    因为需要在项目中构造restful的链接,action通配符使用/进行分割.但是struts默认不支持反斜杠. 所以需要在Struts.xml配置 <constant name="st ...

  2. liunx文件定期本地备份、异地备份、删除备份脚本

    导航 一.背景二.依赖功能介绍三.本地备份脚本四.异地备份脚本五.定期删除备份六.github脚本地址 - - - - - - - - - - 分割线 - - - - - - - - - - 一.背景 ...

  3. 在mybatis中#{}和${}的区别

    文章目录 1.第一个#{} 2.第二个${} 3.区别 1.第一个#{} 解释: 使用#{}格式的语法在mybatis中使用preparement语句来安全的设置值 PreparedStatement ...

  4. Java实现7种常见密码算法

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 前面在密码学入门一文中讲解了各种常见的密码学概念.算法与运用场景,但没有介绍过代码,因此,为作补充,这一篇将会介绍 ...

  5. Droplet——一款轻量的Golang应用层框架

    Github地址 如标题所描述的,Droplet 是一个 轻量 的 中间层框架,何为中间层呢? 通常来说,我们的程序(注意这里我们仅仅讨论程序的范围,而非作为一个系统,因此这里不设计如 LB.Gate ...

  6. Python基础之模块:6、hashlib模块 subprocess模块 logging模块

    目录 一.hashlib模块 1.简介 2.基本操作与用法 二.subprocess模块 1.简介 2.基本操作与用法 三.logging模块 1.简介 2.基本操作与用法 一.hashlib模块 1 ...

  7. pycharm安装第三方的包

    这里以安装selenium为例子 在file下找到settings 在弹出的窗口点击python interpreter ,然后在右侧点击[+] 在弹窗顶部输入要导入的包名,在下方列表找到对应包后,点 ...

  8. 重新整理 .net core 实践篇 ———— linux上排查问题实用工具 [外篇]

    前言 介绍下面几个工具: Lldb createdump dotnet-dump dotnet-gcdump dotnet-symbol Procdump 该文的前置篇为: https://www.c ...

  9. 线上Electron应用具备哪些特征?

    新用户购买<Electron + Vue 3 桌面应用开发>,加小册专属微信群,参与群抽奖,送<深入浅出Electron>.<Electron实战>作者签名版. 1 ...

  10. java学习之Servlet

    0x00前言 Servlet就是一个接口我们需要写一个类然后去实现Servlet,就可以被服务器识别到.request是用来接受客户端传过来的参数,respone是用来响应客户端的页面.我们所用的容器 ...