ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: lrlxxqxa

每天进步一点点并不太难

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-29 22:54 | 显示全部楼层

我和VBA的第一次亲密接触

有幸在EH的培训中认识老师、同学、拥有很多东西,有知识有技能更多的是感悟。这是在10104班的最后一次小结了,多写一点吧,就说说我和VBA的第一次亲密接触。
找到个很好的贴子适合我这样的新手
http://club.excelhome.net/thread-470603-1-1.html
=======================================
一、什么是VBA?
二、VBA藏在哪里?(VBE窗口)
三、VBE长的什么样子?
四、必知的重要概念(对象、属性、方法,事件)
五、Sub()是什么东东?

=======================================
一、什么是VBA?
VBA是Visual Basic For Application的简称,微软的一种应用程序开发工具

二、VBA藏在哪里?――VBE窗口
VBE就是VBA的编辑窗口,所有的VBA操作都在VBE里完成。
VBE是一个分离出来的应用程序,它可以与Excel无缝结合,但是需要说明的是要运行VBE必须先运行Excel,VBA模块与Excel工作薄文件一起存储,除非激活VBE,否则VBA模块是看不见的。
  1、运行Excel后,怎样切换换到VBE窗口?
   (1)按ALT+F11快捷键;
   (2)选择“工具”—>“宏” —>“Visual Basic编辑器”命令。
      (3)右击工作表名称标签,点击查看代码
(4)单击控件工具箱里的“查看代码”。
如果你的窗口里找不到控件工具箱,请通过“视图”—>“工具栏” —>“控件工具箱”打开它。
(5)通过控件工具箱建立一个新的控件,双击控件。

三、VBE长的什么样子?
大家或许要问:是不是就是那个。。。没错,就是她,我们在作业中已经见过她好几次了。
左侧是“工程资源管理器”,显示一个树型图示,包含了当前在Excel中打开的所有Excel对象,包含工作表,模块,窗体,加载宏及隐藏的工作薄,每个工作薄被认为是一个工程。
       在工程资源管理器里右击,可以在右键菜单里选择相应的命令插入模块或窗体。如果你想删除它或者保存它,同样也可以在这里进行相应的操作。
右侧就是“代码窗口”,她是干嘛用的?相信你已经很清楚了,当然是用来编辑VBA代码的地方,工程中的每一项都有一个与之相关联的代码窗口。

四、必知的重要概念(对象、属性、方法,事件)
1、对象:对象就是存在的东西,是VBA处理的内容,包括工作薄、工作表、工作表上的单元格区域、图表等等。引用从大到小不同的对象时用点分隔。如:
  1. Application.Workbooks(“mybook.xls”).Worksheets(“mysheet”).Range(“A1:B10”)
复制代码
2、属性
每一个对象都有属性,一个属性就是对一个对象的一个设置。如名称、显示状态、颜色等。对象和属性用点来分隔。比如
  1. CommandButton1.Caption = "去掉下拉箭头"
复制代码
通俗说就是给对象(commandbutton1)的名称属性(caption)赋值为“去掉下拉箭头”
3、方法
    每一个对象都有方法,方法就是在对象上执行的某个动作。和属性相比,属性是静态的,方法是动态的。对象和方法同样用点来分隔。
4、事件
事件就是由用户或者系统触发的,可以在代码中响应的一段代码。比如,当我们移动鼠标,打开工作薄,激活工作表,选中单元格,改变单元格的数值,点击按钮或窗体,敲击键盘等
我的理解就是在代码窗口:左边是对象,右边是事件。比如我们左边选择worksheet这个就是表明要对worksheet进行操作,右边选择pivottableupdate,就是要在透视表刷新的时候(这个事件)执行窗口里面的代码。

五、Sub()是什么东东?
Sub就是过程,过程就是执行某些动作的代码组合,总是以“sub 过程名()”开头,以“End Sub”结尾。

先就这些吧,别的我还不会呢。

[ 本帖最后由 lrlxxqxa 于 2010-4-29 23:02 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-30 12:25 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 12:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

关于数据透视表计算字段汇总的"先天缺陷"?(未解决)

添加计算字段正确汇总

1/楼主的数据源里面的"订单应收"公式就是=IF(承揽额<销售额,销售额-回款额-调增调减,承揽额-回款额-调增调减),跟透视表里添加的计算字段"姜老应收"公式一样,可是透视表里显示的数据却不一样.
2/透视表里面的汇总项不是根据明细计算,而是根据同行字段汇总计算,这就是2楼所说的"先天缺陷"吧?
3/用sql如何处理,能具体讲解下吗?
==================================================================================================
再经实验,即使添加计算字段"实际金额"=IF(承揽额<销售额,销售额,承揽额),再更改老姜应收=实际金额-回款额-调增调减,结果依然不对

未解决

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 13:12 | 显示全部楼层

函数的隐含交叉特性/内存数组/能返回数组的函数

山版进,关于公式返回数组的数组公式

[原创]LOOKUP()在处理内存数组中的应用

countif函数的第一个参数不能是内存数组,否则输入完公式回车确认的时候报错(弹出对话框)
用index能否返回一个区域的结果(即数组形式),vlookup呢?

[原创]函数INDEX数组应用精解

很好的教学贴:[求助]转置后的表格如何还能按照大小排列?

什么叫函数的隐含交叉特性?

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 13:17 | 显示全部楼层

VBE代码窗口中sheets(1)的含义(易混淆)

发现有的同学在VBE编写代码时没有理解sheets(1)的含义,这或许有一定的代表性吧,简单解释下希望能帮到大家.

假设我们要通过按钮的点击只刷新透视表1和透视表3,那么代码中应该怎样标识呢?

为了方便说明,工程窗口截图如下:



这个时候容易犯的错误如下:



正确代码应该是
  1. Sub 矩形1_单击()
  2. Sheets(2).PivotTables(1).PivotCache.Refresh
  3. Sheets(4).PivotTables(1).PivotCache.Refresh
  4. End Sub
复制代码
为什么呢?看下前台标签界面就明白了



sheets(2)括号里面的数字指的是前台工作表从左往右的顺序数,而不是后台工程窗口中从上到下的顺序.

另一种方法就是直接引用工作表的名称
  1. Sub 矩形1_单击()
  2. Sheets("透视表1").PivotTables(1).PivotCache.Refresh
  3. Sheets("透视表3").PivotTables(1).PivotCache.Refresh
  4. End Sub
复制代码
括号中的名字即工作表的名称,这个与后台工程窗口的名称也是一致的.

那么稍微扩展一下,大家思考一个小问题:
Worksheets(1)和Worksheets(“sheet1”)有什么区别?

聪明的你们一定想到了:
      Worksheets(1)表示Worksheets集合里的第一个工作表。
      Worksheets(“sheet1”)表示Worksheets集合里名为"sheet1"的工作表。
相信看到这里都没问题啦.

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 18:37 | 显示全部楼层

隐藏函数N()的秘密

[函数应用系列讨论14] 关于N()/T()函数的返回值问题

N()返回一个区域的第一个元素,结果仍然是数组。

a1:c1是一个区域,所以n(a1:c1)只返回一个数。

对于四维以内的多维引用是由多个虚拟区域组成的,有多少个区域n()就返回多少的数字结果。

所以N可以将三维引用转换成一维数组,将四维引用转换为二维数组。
=======================================

ps:用offset进行一行或者一列的偏移形成了三维引用,一个区域的行、列同时偏移形成了四维引用

20060110关于N()T()返回值的讨论.rar

20.23 KB, 下载次数: 53

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 18:45 | 显示全部楼层

不同的组合编写区域数组公式

可用if+offset+match组合,也可用index+match组合,原理都是根据需要构建适合的二维内存数组作为参数驱动
还需要在实战中理解和运用

如何编写区域数组公式?
======================================================
[函数与公式] 帮助解释一个区域数组公式并改进 http://www.exceltip.net/thread-7846-1-1-25594.html

OFFSET产生三维引用,要在二维的单元格中得到其引用的值,需降低维度。
使用N函数、T函数,分别可以降低维度后并取得数值、文本结果。

IF函数返回的结果与第1参数的维度是一致的。

因此,1楼的附件,使用IF(1,实际上起到了两层作用,即:降低维度和隐含交叉(Excel的叫法应该是“绝对交集”)。

同时,解决了N函数将文本返回为0、T函数将数值返回为""的问题。


尽管有如此多名堂在里面,个人还是推荐使用rongjun版主的INDEX解法:
1、OFFSET是易失性函数,本身使用多单元格数组公式,就是要提高运算效率的。
2、公式更简洁,更易看懂;
3、IF(1,得到的,并非内存数组,那么INDEX就不输这一点了。

[ 本帖最后由 lrlxxqxa 于 2010-5-3 23:38 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 20:59 | 显示全部楼层

数组的多维引用

[原创] 浅谈引用函数产生的多维引用及其应用

占个位待编辑
=========================
目前的理解:要从时间和空间的角度上去理解二维、三维、四维,比如
一个平面上再多个不连续区域也只能算是二维;
如果运用offset函数引用,结合1个一维数组参数,这时同一时点只能出现一个行(列)偏移,多个参数形成多个时点的行(列)偏移,这在空间上形成三维引用;
还是用offset举例,结合2个一维数组参数,这样同一时点同时向2个方向出现区域的偏移,空间上形成四维引用

[ 本帖最后由 lrlxxqxa 于 2010-5-3 22:57 编辑 ]

引用函数产生的多维引用及其应用.rar

90.04 KB, 下载次数: 64

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 22:51 | 显示全部楼层

什么叫做隐含交叉引用

[函数与公式] 什么叫做隐含交叉引用 http://www.exceltip.net/thread-3418-1-1-25594.html

引发问题帖:帮解释一个区域数组公式中的1
===========================================================
Q:什么是“隐含交叉引用”?
A:依靠公式所在的从属单元格与引用单元格之间的物理位置返回交叉点值,这种特性称为“隐含交叉引用”。
如图所示:在C6单元格输入公式=A1:E1,从公式所在的单元格C6向其引用的单元格A1:E1作一条垂直线(红色边框),其交叉点的值是3。同理,D4单元格输入=A1:A10则返回A4单元格对应的值。
注意:这里说的返回交叉点的值,是指普通公式中的运算所返回的值。在数组公式运算中,=A1:E1返回的是1行5列的数组,而非交叉点的单值。
============================================================
绝对交集
今天翻看帮助文件时,发现了“绝对交集”概念,实际上就是我们说的“隐含交叉”引用关系。
隐含交叉一词可能是在网上讨论后的定义。
2003、2007版的帮助文件都有“绝对交集”概念,在三维引用部分:
三维引用不能与交叉引用运算符
(空格)一起使用,也不能用在使用了 绝对交集
的公式中。
(绝对交集:对单元格区域而不是单个单元格的引用按照单个单元格进行计算。如果单元格 C10 包含公式 =B5:B15*5,则 Excel 将单元格 B10 中的值乘以 5,这是因为单元格 B10 和 C10 位于同一行。)

[ 本帖最后由 lrlxxqxa 于 2010-5-3 22:55 编辑 ]
1212.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 23:12 | 显示全部楼层

页面设置-组及分级显示

合理的利用“数据”-“组及分级显示”进行设置,可以使页面更加整洁美观。

组及分级显示.rar

28.6 KB, 下载次数: 77

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 16:32 , Processed in 0.038770 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表