乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel与vbs(excel与vba程序设计)

excel与vbs(excel与vba程序设计)

作者:乔山办公网日期:

返回目录:excel表格制作

操控excel,选择Python还是vba?


数据量大更建议用Python,vba一般都是将数据存放在内存中,当数据不拆分电脑配置又不高,就会显得比较卡,数据处理完毕后,不释放下内存电脑用起来也会比较卡,vba一般只会启动2个cpu核心进行数据计算,运算效率也比较低,现在微软已经停止对vba的更新,更建议学习Python,如果只是操作excel,这两个学习难度差别不大,但是Python发展空间会更好


还有一种更加便捷的方法,就是使用power bi的三大组件进行数据处理,使用power query进行数处理,powerpivot进行分析,power view进行数据可视化,优点就是学习周期短,数据可实现自动刷新,上手比较快,使用这个方法,效率可能会比excel快一些,但是速度仍然不及python,当然了为了长久可持续更建议学习Python,但是上手周期会比较长

Excel VBA选取单元格有哪些方法和技巧?


VBA选取单元格的8种方法

本技巧目的: 掌握单元格的各种引用方法

  • Excel 就是由基本元素 -- 单元格构成的,它就像我们身体的细胞一样,可是非常重要的,千万不能小看它的作用。不论是学习 vba 还是 操作 Excel 本身, 最先接触到的就是单元格,只有熟练的掌握了,才能进行后续的操作。
  • ★★★ 注意:下面所有的标点符号全部使用半角,或者说英文标点。 代码中不区分大小写。
  • 使用代码助手可以实现代码的快速输入。
  • 代码助手下载地址 http://excel880.com/blog/archives/11297

1. Range 属性

  • 单个单元格的表示方法:

  • 表示方法:Sheet1.Range("A1")

  • 注释:
  • 1) 工作表 Sheet1 的单元格: A1, 书写格式:Sheet1.Range("英文字母+数字")
  • 2) 保持良好的习惯加上工作表名称,对于后续跨工作表的操作会减少很多的问题。就像寄快递时要把小区的每栋楼的编号写上一样,不会发生快递寄到隔壁楼的问题哟。
  • 单元格地址选中使用命令: .Select
  • Sheet1.Range("A1").Select
  • 多个单元格的表示方法:


  • 连续单元格: A3 到 C6 单元格
  • 表示方法: Sheet1.range("A3:C6")
  • 注释:
  • 1) 书写方法: Sheet1. ("英文字母+数字 : 英文字母+数字")
  • 2) 首尾单元格之间用 : 连接
  • 二组连续单元格,组合起来的方法:
  • A3 到 C6 单元格 , E7 到 G11 单元格
  • 表示方法: Sheet1.range("A3:C6, E7:G11")
  • Sheet1.range("A3:C6, E7:G11").Select
  • 注释:
  • 1) 书写方法: Sheet1. ("英文字母+数字 : 英文字母+数字, 英文字母+数字 : 英文字母+数字")
  • 2) 二组不连续的地址,中间用 ,分隔
  • 3) 要点: 连续单元格: 首尾之间用 : 来连接, 二段不连续的单元格组合用 ,分隔
  • 2. Cells 属性

    • ★★★ 小技巧: 安装代码助手后,alt+数字 0 : 可以快速转换 列号 为数字 或者 英文字母
    • 单个单元格:


  • 表示方法:sheet1.cells(1,1) 或者 sheet1.cells(1,"A")
  • 注释:
  • 1)括号内 前面代表:行 后面代表:列, 用 ,分隔
  • 2)二种方法:
  • ① 前后都使用数字
  • ② 前面使用数字,后面用英文字母代表列号
  • ③ ★★★ 注意:英文字母要加双引号
  • 多个单元格的表示方法:
    • 连续单元格: B2 到 D7 单元格
    • 表示方法:sheet1.Range(sheet1.cells(2,2),sheet1.cells(7,4)) 或者
    • sheet1.Range(sheet1.cells(2,"B"),sheet1.cells(7,"D"))
    • 注释:
    • 书写方法: sheet1.range(工作表名称.左上方单元格,工作表名称.右下方单元格)

    ★★★ Range 和 Cells 总结:

    • 1) Range 和 Cells 书写方法不同: Range("A1") 和 Cells(1,1) 或者 Cells(1,"A") 所指的单元格是相同的
    • 2) Range: 写好后, 后面加上 . 系统会出现提示, Cells 没有
    • 3) Range: 可以表示连续的单元格
    • 4) Cells: 更方便,直接写行,列号, 中间用英文逗号分隔,不需要使用字符串拼接。它是在循环中根据行列号访问的主要手段
    • 例如: Range("A" & rows.count) Cells(rows.count, "A")

    3. 方括号 [ ]

    • Sheet1.Range("A1") 可以写成 sheet1.[A1]
    • Sheet1.range("A1:C1") 可以写成 sheet1.[A1:C1]
    • ★★★ 注意: 只能使用列号的英文字母或者行号数字,不能使用变量

    4. Offset 属性

    • Offset 的使用方法:
    • 以某单元格作为起点,然后以他为起点向上下,左右偏移。

    • 1)需求:当用户选中单元格后 , 需要在选中的单元格左上单元格写入数字 1,
    • 且选中单元格是未知的。
    • 2)有了Offset 属性,只需要在 Selection 后输入偏移的行列号,就能实现输入。
    • 3)实现方法:Selection.offset(-1,-1) = 1 这样书写是不是很方便呢?
    • 二种方法:
    • 使用 offset, 假设以 B3 为起点, 这个起点位置可以根据自己的要求来设定。
    • 书写方法:Sheet1.range("B3").offset(0,1)
    • 注释:
    • 1) 代表: B3 开始,不偏移行,向右偏移一列, 即 C3 单元格
    • 2) offset 括号内 前面数字代表行, 后面数字代表列
    • 3) 数字 0 代表: 不偏移
    • 4) 数字 -1 代表: 向上 或者 向左 偏移
    • 例如1: Sheet1.range("B4").offset(-1,1) 即: B4 向上偏移一行,向右偏移一列, 即 C3 单元格
    • 例如2: Sheet1.range("D5").offset(-2,-1) 即: D5 向上偏移二行,向左偏移一列, 即 C3 单元格
    • 使用 range 或者 cells, 假设以 B3 为起点, 这个起点位置可以根据自己的要求来设定。
    • 书写方法:sheet1.range("B3").cells(1,2) 或者 sheet1.range("B3").range("B1")
    • 注释:
    • 1) 上面书写方法代表:B3 开始,不偏移行,向右偏移一列, 即 C3 单元格
    • 2) 详解:
    • ① 不能 向上 或者 向左 偏移
    • ② 数字 1 代表: 本行,本列
    • ③ 数字 2 代表: 向下 1 行 或者 向右 1 列
    • ④ 数字 3 代表: 向下 2 行 或者 向右 2 列
    • ⑤ 后面以此类推,每增加 1,偏移 也 增加 1
    • ⑥ Range 中的英文字母可以当作数字来看 即 B 代表 数字 2, C 代表 数字 3

    5. Resize 属性

    • 要求:表示上图的 B3:E10 单元格
    • 同理:首先以某单元格作为起点,然后以他为坐标向上下,左右扩展。这里是使用扩展哦。
    • 好处和前面说的 Offset 是一样的:修改方便,另外即使是未知位置单元格也能扩展。
    • 书写方法:Sheet1.Range("B3").Resize(8, 4)
    • 注释:
    • 1) 上面书写方法代表:B3 开始,(含本行本列)共扩展 8行,4列, 即 B3:E10 单元格
    • 2) 详解:
    • ① 数字 1 代表: 本行,本列
    • ② 数字 2 代表扩展: 向下 1 行 或者 向右 1 列
    • ③ 数字 3 代表扩展: 向下 2 行 或者 向右 2 列
    • ④ 后面以此类推,每增加 1,扩展 也 增加 1
    • offset,resize 组合联合使用
    • 这两个属性是可以组合使用的。这样对于后期的改动会更为方便快捷。

    • 要求:表示 C3:E9 单元格
    • 书写方法:Sheet1.Range("A1").Offset(2,2).Resize(7,3)
    • 注释:
    • 1) A1 单元格 偏移: 向下 2行 向右 2列 再扩展: 向下 7行 向右 3列
    • 2) 偏移,扩展可以前后随意组合

    ★★★ Offset、Range 和 Resize 总结

    6. Union 属性

    • 连接二个不连续的区域: B3:D8, G10:I15
    • 书写方法: Union(Sheet1.Range("B3:D8"), Sheet1.Range("G10:I15"))

    7. Usedrange 属性

    • 书写方法: Sheet1.Usedrange
    • 注释:
    • 1) 确定Sheet1 的 已使用区域
    • 2) 该代码所表示的地址为:A1:D7

    • 书写方法:Sheet1.Usedrange
    • 注释:
    • 1)该代码所表示的地址为: A1:G11
    • 2)★★★ 注意: F10:G10 区域即使为空格, 表示的地址也会是 A1:G11

    8. CurrentRegion 属性

    • 书写方法:Sheet1.Range("A1").CurrentRegion
    • 注释:
    • 1) 以 A1 为起点的连续区域
    • 2) 该代码表示的地址为:A1:D7
    • 书写方法:Sheet1.Range("F10").CurrentRegion
    • 注释: 该代码表示的地址为:F10:G11

    主要使用excel处理数据的话,财务人员学习VBA和python哪个比较好?


    作为两种语言都会一些的财务人员,首先还是推荐先VBA,再考虑Python的学习


    理由如下:

    VBA作为office的原始自带语言,相对于其他语言操作Excel更加方便快捷


    VBA是Visual Basic For Application 的简称,语法体验和VB一致,都是一个大家族,作为一门脚本语言,学习成本相对于其他语言较低。

    Python作为最近几年的热门语言,其语法简洁明了,轮子也多,财务领域,可以用于数据的采集,ETL和后续分析。就数据方面Python操作起来方便很多,但是对于一些格式图表细节则不如VBA来的方便。


    VBA学习成本相对Python低一些

    对于新手,首先要学习的就是录制宏!

    在Excel中录制宏,把我们的操作录制下来,反复使用,就好像录制视频一样,可以反复观看,其中80%的功能,我们可以通过录制宏来实现,剩下要学习的知识并不是很多

    需要学习的大概有

    1、工作薄对象,工作表对象、单元格对象、图表类对象(相对前两者使用少一些)等

    2、循环和判断语句(FOR、DO、IF常用)等

    3、其他重要:数组、FSO、正则、字典等


    财务人员使用Excel频率高,跨文件操作必学VBA

    只会函数、技巧、图表对于复杂一些的财务需求是远远不够的,

    集团中,财务面对是经常是大量的文件汇总处理、数据抽取、分析、拆分

    这种跨文件,大量的处理,是函数所无法完成的,如果会VBA则得心应手


    未来可以推荐PBI系列

    随着PBI和Power系列的出现,给Excel插上了翅膀,

    Power Query :对数据的ETL简单高效,降低了学习成本,对于新手比较友好,

    Power Pivot :号称超级透视表,透视表大家都知道非常的好用,对于简单的数据分析,非常方便,那么这个超级透视表,可见一斑

    Power Map:数据可视化展示,比自带的常用图表展示更加方便,在Power BI中有了更多的图表插件可以学习


    简单说两句,大家有兴趣可以留言,进一步交流沟通!

    学习Excel一定要精通VBA才是高手吗?


    首先,我对这个问题持否定意见。

    我十多年前曾经用VBA+Access编写过一个100多人使用的生产管理系统,带很多UI界面。可能有些人感觉这样水平算比较高了吧,但我自己确实没这种感觉。

    一般讲高手是一个相对的概念,是不是高手应该取决于对比对象。但我觉得使用会不会VBA来判断Excel水平,这对比本身就不是公平的。类似于两个人打游戏,其中一个会用外挂,我们显然不能用会不会外挂来评判他打游戏水平高。

    对于普通程序员,学习VBA难度很小,极短的时间就可以上手,但他很可能Excel很多函数都还用不好。事实上,一个人会了VBA,很可能遇到问题首先去想VBA怎么实现,反而降低了探索Excel自身功能的动力。对于不会VBA的使用者来讲,更有动力去挖掘Excel自身的各种功能。

    我的意见仅针对这个问题本身,并非劝大家不要学习VBA。Excel功能无论多强大,但仍有靠自身无法实现的功能。熟练掌握Excel后,再有VBA作辅助,生产力会更上一个台阶。

    以上都是个人意见,如果对我回答有兴趣或异议,欢迎评论指正。

    经常使用Excel,学习VBA还是PYTHON?哪个容易学?我是四十岁大叔?


    其实Vba和Python作为语言来比较,没有特别谁比谁好的。比如下面是许多人列出的对比:

    1. Python资料多。其实你用Vba可以通过录制宏得到大致的代码

    2. Python语法简单。其实编程语言来来去去就那么几个基本语法,说语法知识点的话,Vba的语法数量更少(因为他是一门很久没有更新的语言)

    3. Python的库多。这是真的,Vba没法相比。


    这样看起来,感觉好像Vba会好一些,其实你的问题应该从2方面去做考量。


    一,操作Excel为主

    如果你的工作需求都是可以通过Excel内置功能完成,那么 Vba 会更加方便,你编写代码方便,就意味着你更容易学习。


    比如:批量设置多个工作表的格式,简单调用Excel内置排序功能完成数据排序等等

    如上这些需求其实都不涉及复杂的数据处理,完全是调用Excel内置功能即可完成,因此使用Vba只需要简单录制宏,通过基本语法即可完成自动化。


    二,数据处理为主

    当你需要进行数据处理的时候,那么Vba平台就显得很笨重。一旦数据量上千过万(这数量级实际很小),你就需要学习数组、字典这些知识才能完成任务,这里面的学习量就很大。


    比如:某学校考试超过全校平均成绩的学生列出来。


    就这么一个简单的需求,你要用Vba完成,代码量不会少,如果你在代码中使用函数公式,代码逻辑会不清晰,并且数据量上千后,速度会很慢。如果你用数组处理,代码量会多起来。


    如果你学习python,并且会一点pandas库的知识,这种需求就一两句代码解决的事情,并且代码逻辑清晰。


    因此,如果你的工作任务涉及这种数据处理需求,那么建议你学习Python。随着需求难度升级,如果你用vba,不是说不可以解决,只是说你可能会疯掉。


    三,操作Excel + 数据处理

    你的情况可能是既要操作Excel,又有数据处理。那么建议你先学习Python,因为操作Excel其实可以使用Python的xlwings库完成,操作逻辑的代码同样可以通过录制宏稍作修改即可使用。


    而且,当你学会python,其实学习vba是很简单的事情,因为你不需要考虑用低级结构(数组,字典这些)去处理数据。


    最后

    顺便提醒一下你,其实Python语言在数据处理上本身没有啥特别优势,但是Python作为一个平台,他有许多优秀成熟的第三方库,那些库才是你的学习重点。千万不要把宝贵的精力用在低效的地方


    你可以去看看我的头条号的文章,非常多关于数据处理的文章,也有一部分是结合Vba与Python一起使用的案例,有学习疑问也可以私下交流。

    Excel的VBA现在还算是办公利器吗?


    任何一项技能,都有其存在的理由,不要因为某个人的否定而否定,尤其是在还有很多人的肯定的情况下。通常是懂A的人可能不懂B和C,懂B的人告诉你不要学A和C,而懂C的人觉得A和B没有用……

    计算机专业的人告诉你python更加强大,往往是因为他自己不需要大规模应用Excel(说实话,我在软件行业和项目上碰到太多的开发大牛都不精通Excel,因为他们根本不需要用),所以,这种建议该怎么采用,自己要学会辩别。

    的确,如果单纯从一门编程语言的角度来说,python是比VBA强大不止一丢丢,但是,当你日常处理数据大部分都是在Excel上时,python是强龙,VBA却是地头蛇!

    所以,一样东西的强大与否不是你学不学的理由,而是哪一样更适合你的需要。

    接着再看Excel内的事情,包含的技能除了日常功能、函数之外,还有VBA和现在的Power系列。现在,对于大部分的用户,我个人更加推荐Power系列的学习,优先于VBA。为此,我翻译过一段文字:

    Excel公式?VBA?还是Power Query!

    大海

    Excel到PowerBI

    最近,一直有朋友问我到底学不学VBA,我一般不建议他们学,除非对编程很感兴趣,或者本身已经有一定的编程基础,否则,将耗费大量的精力,而收效甚微。

    恰巧,最近在一本比较专业的书上找到关于Excel函数、VBA以及Power Query在数据导入、清洗、转换方面的一些描述和对比,翻译如下,供参考:

    • 黑魔法的好处和危险

    Excel可用多种不同的技术来实现魔法般的数据处理——有时单独使用,有时组合使用。这些魔法包括:

    Ø Excel公式——是技术人员经常利用的第一种技术,如VLOOKUP、INDEX、MATCH、OFFSET、LEFT、LEN、TRIM、CLEAN等等。虽然公式往往被大多数Excel用户使用,但公式的复杂性因用户的经验和思路差异很大。

    Ø Visual Basic应用程序(VBA)——这种强大的语言可以实现强大而动态的数据转换。 VBA技术往往被高级用户使用,需要掌握一整套的语法规则。

    Ø SQL语句——SQL是操作数据的另一种强大的语言,特别是用于选择、排序、分组和转换数据。但是,SQL通常只被高级用户使用,甚至很多Excel专业人士都不知道该怎么去应用,SQL也通常被认为是数据库专家的独门武器,尽管每个Excel专家都应该花一点时间学一学。

    所有这些工具都有一些共同点:多年来,它们基本上是唯一可用的数据清理和转换工具。尽管这些工具非常有用,但也存在两个严重的缺点:需要较长的时间来掌握技术和建立解决方案。

    虽然可以使用这些工具来建立自动化的原始数据导入解决方案,但这往往需要经过多年的高级语言学习以及耗费大量的精力来进行范围界定、开发、测试和维护相应的解决方案。取决于解决方案的复杂性,数据导入格式的微小变化,或希望扩展原有解决方案来适应更多数据来源可能是一件很可怕的事情。

    在公司中,有一个所谓技术大神反而是一个隐藏的危险,这个人可能会建立一套令人惊叹的解决方案,直到他离开公司很久才出现问题。然后,公司的其他人发现根本搞不懂这套方案,也就没有人能在出现问题的时候再搞定它。

    另一方面,大部分负责数据整理的人没有时间或机会学习这些先神奇的技术,结果,这种崩溃后无人能修复的大系统,还不如用一些简单基础的技术来重复处理和导入数据,即使要花费几个小时、几天、几个月甚至几年的精力及成本。

    但是,花点时间,想想你公司每月花费几个小时在Excel中进行重复的数据导入和清洗任务。将这些时间乘以你公司的平均工资率……以及全球范围内的公司数量……你又会发现,这个成本非常惊人。

    我们希望有一个能应对以上矛盾的产品,既容易学习,其他人又容易接手并且理解障碍很少,又能实现自动的数据导入和清洗,使得你可以更加集中精力于数据的利用和增值——这个产品就是Power Query。

    • 未来转变

    Power Query解决了上述工具的相关问题。 这很容易学习,有最直观的用户界面,很容易维护,因为它显示了数据导入及清洗的每一步,你可以随时查看或修改。同时,Power Query中所做的所有操作,都可以通过简单点击几下完成刷新。

    我们花了数年时间使用黑魔法构建解决方案,但Power Query将改变游戏规则,原因有很多,其中之一就是学习速度。

    当涉及到数据导入、清洗和转换以便分析时,您学会Power Query的速度比Excel公式还要快,用于处理多种复杂数据源等情况时,比VBA要容易的多。


    学习曲线示意图

    • 学习建议

    总的来说,我个人的建议是:

    Ø Excel公式当然要学,因为那是最基础也用的最多的东西。

    Ø Power Query和VBA的问题上,优选Power Query。

    Ø 学有余力或对编程很感兴趣,再学VBA。

    除了上面提到的Power Query,还有Power pivot等等。你可以多点去了解。

    总之,适合自己的才是最好的!

    欢迎关注【Excel到PowerBI】

    我是大海,微软认证Excel专家,企业签约PowerBI顾问

    让我们一起学习,一起成长!

    本文标签:

    相关阅读

    • excel与vbs(excel与vba程序设计)

    • 乔山办公网excel表格制作
    • 操控excel,选择Python还是vba? 数据量大更建议用Python,vba一般都是将数据存放在内存中,当数据不拆分电脑配置又不高,就会显得比较卡,数据处理完毕后,不释放下内存电脑用起来也会
    关键词不能为空
    极力推荐

    ppt怎么做_excel表格制作_office365_word文档_365办公网