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. 空 Maven项目转成 Web项目 & SpringMVC调用其他 Module中的方法可能会遇到的小问题

    SpringMVC调用其他 模块内的方法的 坑 下次别在阴沟里翻船啦.. 一共花费 4个小时,解决项目中的这个问题 OMG 1. 首先是 Maven新建工程 一般使用 Maven都是先创建 空工程 当 ...

  2. PHP获取两个时间差

    <?php //PHP计算两个时间差的方法 $startdate="2017-12-3 12:00:00"; $enddate="2017-12-4 12:00:0 ...

  3. C++ Undefined Behavior 详细列表

    Undefined Behavior,即未定义的行为,指程序不可预测的执行效果,一般由错误的代码实现引起.出于效率.兼容性等多方面原因,语言标准不便于定义错误程序的明确行为,而是将其统称为" ...

  4. 利用inotify和rsync服务实现数据实时同步

    文件定时同步的实现: 利用rsync结合cron计划任务实现: rsync -av --delete /data/ 10.0.0.12:/back -a:保留文件属性 -v:显示过程 -delete: ...

  5. awk变量

    awk变量 awk参数 参数 解释 -F 指定分割字段符 -v 定义或修改一个awk内部的变量 -f 从脚本文件中读取awk命令 对于awk而言,变量分为 内置变量 自定义变量 内置变量 解释 FS ...

  6. 设置CMD命令的初始目录

    本文提供两种方式,第一种通过打开桌面上的快捷方式实现,第二种可以通过 CMD 命令直接进入. 快捷方式 "开始 ---> 程序 ---> 附件",右键单击 " ...

  7. java学习之爬虫

    0x00前言 对比与Python的爬虫机制和java的爬虫机制来详解一下java的爬虫,对于一般性的需求无论java还是python都可以胜任. 如需要模拟登陆.对抗防采集选择python更方便些,如 ...

  8. 【devexpress】spinEdit控件如何设置只能输入两位小数

    只需设置对应的正则表达式即可,我这里设置的是n2意思就是两位小数的意思 效果如下

  9. 1 c++编程基础

    重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦! 生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 1 c++揭开面纱 1.1 编程 ...

  10. 解决mysql本地连接速度慢

    解决方法 用127.0.0.1而不用localhost 原因 听说是有什么DNS的反向解析