vba数组

【Excel VBA】数组应用(2)

≯℡__Kan透↙ 提交于 2020-03-03 00:27:36
图1 源数据 如果需要查询所有"编号"为"EH002"的记录,并将查询结果展示在单元格区域中,示例代码如下。 Sub LoopArr() Dim avntData() As Variant'声明数组保存数据源 Dim avntResults(1 To 30, 1 To 4) As Variant Dim intCount As Integer'声明变量用于记录符合条件的数量 Dim i As Integer avntData() = Sheets("数据源").Range("a2:d31").Value For i = 1 To UBound(avntData(), 1) If avntData(i, 2) = "EH002" Then intCount = intCount + 1 avntResults(intCount, 1) = avntData(i, 1) avntResults(intCount, 2) = avntData(i, 2) avntResults(intCount, 3) = avntData(i, 3) avntResults(intCount, 4) = avntData(i, 4) End If Next i Range("A2").Resize(intCount, 4) = avntResults()'将数组写入单元格区域中 End Sub

VBA for Excel(二)

社会主义新天地 提交于 2020-02-26 23:16:45
VBA for Excel(二) 本文涉及到的问题 没什么问题,就一些基础理论知识 计算机专业或计算机爱好者可以跳过 本文目录: 文章目录 VBA for Excel(二) 2.1 代码规范 2.2 变量 2.2.1 数据类型 2.2.2 作用域 2.2.3 对象变量 2.3 操作符 2.4 数组 2.5 流程控制 2.1 代码规范 " ' " 开头的行代表注释,也可像Dos一样使用Rem开头 用 " Dim " 定义变量,可连续定义多个但需分别指定类型,如: Dim a$,B$ 代码可使用 " + _ " 换行续写 一行存在多个语句用 " : " 间隔 引用变量方法函数对象时不区分大小写 2.2 变量 2.2.1 数据类型 数据类型 字节数 范围 Byte 1 0~255 Boolean 2 True,False Integer 2 -32768-32767 简写:% Long 4 正负20多亿 简写:& Single 4 小数,更大 简写:! Double 8 小数,更更大 简写:# Currency 8 会计用小数,足够大 简写:@ Date 8 0100年-9999年 Object 4 对象的引用 String - 足够大 简写:$ Variant - 足够大 Dim A as Integer,B as Boolean,C as Date,D as string A=1 B

(转)xlwings使用教程

浪尽此生 提交于 2020-02-13 20:24:11
xlwings使用教程 转载 whalefall 最后发布于2019-10-21 15:49:26 阅读数 4192 收藏 展开 (一) python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他们提供的功能归纳起来有两种:一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel文件只是用来储存数据。二、除了操作数据,还可以调整Excel文件的表格宽度、字体颜色等。另外需要提到的是用COM调用Excel的API操作Excel文档也是可行的,相当麻烦基本和VBA没有区别。 xlwings官网.png xlwings的特色 xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改 可以和matplotlib以及pandas无缝连接 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。 开源免费,一直在更新 基本操作 xlwings基本对象 打开已保存的Excel文档 # 导入xlwings模块,打开Excel程序,默认设置:程序可见,只打开不新建工作薄,屏幕更新关闭 import xlwings as xw app=xw.App(visible=True,add_book=False

全民一起VBA提高篇第四课:深入理解单元格

﹥>﹥吖頭↗ 提交于 2020-02-07 09:26:53
range相关 range.row:返回range左上角单元格的行号 range.column:返回列号 range.address:返回各个对角顶点的绝对引用地址 Sub rangedemo() Dim r As Range Set r = Range("B3:D9") r.Select '让上面的单元格被选中 MsgBox r.Row & "行" & r.Column & "列" '输出range范围 End Sub 或者写 MsgBox r.Address 返回绝对引用的位置 range.rows(n)用来返回所选range第一行的位置 Sub RowsDemo() Dim a As Range, rw As Range Set a = Range("c4:e12") a.Select Set rw = a.Rows(1) MsgBox "第一行的范围是:" & rw.Address End Sub 判断一共有多少行 Sub RowsDemo() Dim a As Range, rw As Range Set a = Range("c4:e12") a.Select MsgBox "一共有" & a.Rows.count & "行" End Sub 找最后一行结合cells Sub FindLastRow() Dim i As Long, lastRow As Long i

全民一起VBA实战篇第五课:外部文件处理技巧

て烟熏妆下的殇ゞ 提交于 2020-02-07 04:05:26
题目一 用窗口选择/打开文件 Sub get 方法 ( ) Dim fname fname = Application.GetOpenFilename ( ) '获取选择的文件名 If fname <> False Then '判断是否有选中,如果点了取消,则退出程序 '否则运行文件 MsgBox fname '返回字符串 Workbooks. Open fname '这个过程才是打开 End If End Sub 有不少可选参数可以设置 Sub get 方法 ( ) Dim fname fname = Application.GetOpenFilename ( _ filefilter : = "EXCEL文件 , * .xlsx ; * .xlsm , 全部 , * " , _ FilterIndex : = 1 , _ Title : = "请选择一个文件" , _ MultiSelect : = True ) '过滤器选择EXCEL文件或者全部文件 '默认选择的是第一个,EXCEL文件 '对话框的标题是"请选择一个文件" '支持多选 If IsArray ( fname ) Then '判断是否有选中,选中一个也是数组 For Each s In fname MsgBox s Workbooks. Open s '这个过程才是打开 Next s End If End Sub

VBA 在行中循环遍历的例子

拈花ヽ惹草 提交于 2020-01-19 03:26:47
在单元格区域对象中循环: For Each c In Range("$A$2:$A$" & Cells(Rows.count, "A").End(xlUp).row ‘do something Next c 基于上述代码运行后,你会发现,少量数据处理上还行,但大量数据之后,电脑卡慢,用时较长等缺点就出来了。 那要如何操作才能既快速,又能按行的要求进行循环遍历呢? 答案是:使用数组替代对象,然后在数组中循环。 使用将单元格区域对象的值装入数组,在数组中循环: Dim i As Long Dim varray As Variant varray = Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value For i = 1 To UBound(varray, 1) ' do something Next 下面是一个完整的例子,此示例仅在列A中符合条件的每个行之后插入一行。在行中,从A2开始,插入期间将+2”添加到变量i中。如果我们用A1启动我们的数组,它将为+1。 Sub test() Dim varray As Variant Dim i As Long varray = Range("A2:A10").Value '必须倒序循环 For i = UBound(varray, 1) To LBound(varray, 1)

Word VBA(批量复制Excel表格和Word表格到Word中)

拟墨画扇 提交于 2020-01-17 14:14:07
unction Test() '使用双字典 SearchPath = FolderDialog("请选择文件夹") If SearchPath = "" Then Exit Function End If WordName = SplitPath(CStr(SearchPath), 1) Dim sFile As Object, fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Set logFile = fso.CreateTextFile(SearchPath & WordName & "日志.txt", True) Dim MyWord As Word.Application Set MyWord = New Word.Application MyWord.Application.ScreenUpdating = False MyWord.Application.Visible = True MyWord.Application.DisplayAlerts = wdAlertsNone Set myDoc = MyWord.Documents.Add With MyWord.ActiveDocument.PageSetup .Orientation = wdOrientLandscape

VBA基础语法:数组

雨燕双飞 提交于 2020-01-10 20:59:18
声明数组 数组 的声明方式和其它的 变量 是一样的,它可以使用 Dim 、 Static 、 Private 或 Public 语句来声明。标量变量(非数组)与数组变量的不同在于通常必须指定数组的大小。若数组的大小被指定的话,则它是个固定大小数组。若程序运行时数组的大小可以被改变,则它是个动态数组。 数组是否从 0 或 1 索引是根据 Option Base 语句的设置。如果 Option Base 没有指定为 1, 则数组索引从零开始。 声明固定大小的数组 下面这行代码声明了一个固定大小的数组,它是个 11 行乘以 11 列的 Integer 数组: Dim MyArray(10, 10) As Integer 第一个参数代表的是行;而第二个参数代表的是列。 与其它变量的声明一样,除非指定一个 数据类型 给数组,否则声明数组中元素的数据类型为 Variant 。数组中每个数组的数字型 Variant 元素占用 16 个字节。每个字符串型 Variant 元素占用 22 个字节。为了尽可能使写的代码简洁明了,则要明确声明的数组为某一种数据类型而非 Variant 。下面的这几行代码比较了几个不同数组的大小: ' 整型数组使用 22 个字节(11 元素* 2 字节) ReDim MyIntegerArray(10) As Integer ' 双精度数组使用 88 个字节(11 元素

Excel VBA调用Excel函数示例-sumif()条件求和

别来无恙 提交于 2020-01-09 23:08:09
一、关于sumif()函数的用法说明及用途。 根据指定条件对若干单元格求和。 语法 SUMIF ( range , criteria ,sum_range) Range 为用于条件判断的单元格区域。 Criteria 为确定哪些单元格将被相加求和的条件,其形式可以为数字、表达式或文本。例如,条件可以表示为 32、"32"、">32" 或 "apples"。 Sum_range 是需要求和的实际单元格。 说明 只有在区域中相应的单元格符合条件的情况下,sum_range 中的单元格才求和。 如果忽略了 sum_range,则对区域中的单元格求和。 Microsoft Excel 还提供了其他一些函数,它们可根据条件来分析数据。例如,如果要计算单元格区域内某个文本字符串或数字出现的次数,则可使用 COUNTIF 函数。如果要让公式根据某一条件返回两个数值中的某一值(例如,根据指定销售额返回销售红利),则可使用 IF 函数。 以上是从帮助文件里复制出来的,以前没有好好看到这些,以为没什么用处,但现在看来里面真是遍地黄金甲啊!! 效果截图如下: 示例解释如下:把属性值(A列)中大于等于200000的(这是条件)对应单元格(B列)(这是实际进行求和的区域)进行求和。 这个函数有什么用处呢?尤其是在学生成绩处理过程中 想来想去,也只能是指把它归为可以进行条件求各而已。 二、在VBA中如何实现?

小白笔记4---EXCEL VBA(1)

泄露秘密 提交于 2020-01-08 10:45:25
1.打开VBA窗口 打开Excel-->文件(file)-->选项(options)-->自定义功能区(customize ribbon)-->主选项卡(main tabs)下-->开发工具(developer) -----勾选 返回主界面 菜单栏选择开发工具(developer)--->visual basic(或者使用快捷键alt+f11) 打开编写界面后,点击插入(insert)-->模块(module)--->可以开始编写VBA 2.VBA简单语法 2.1建立过程 标格式 Sub name() ......(内容) End Sub name表示名称,自行拟定即可,后面的括号不能丢, 书写时可以不需要切换大小写,换行后会格式会自动规整 2.2 变量定义 标准格式 Dim variable_name As data_type Dim ...As...不可更改;variable_name为定义的变量名称,可自定义;data_type为定义变量的数据类型,有明确的类型,非自定义,包括String,integer,double,single,date,boolean,Variant等 定义一个整型: Dim variable_name As integer 定义一个浮点型:Dim variable_name As single //单浮点 ;Dim variable_name As