您的位置:新葡亰496net > 新葡亰496net > 您会些什么,基于Python达成excel表格读写

您会些什么,基于Python达成excel表格读写

发布时间:2019-08-17 15:04编辑:新葡亰496net浏览(93)

    问题:如何让一个Excel表格的信息自动同步到另一个表格中?

     

     

    摘要: 考虑到VBA写不好但是有对批量化处理数据的需求,所以推荐Python自带的xlrd和xlwt库对Excel表格数据进行读写操作。简明的代码风格很适合上手。

    本文来源泽稷网校【微信公众号:泽稷ACCA考友论坛、ACCA学习号】ID:zejiacca,需要ACCA全套备考资料的可关注一下,免费赠送的。内有ACCAF1—P7全套通关资料 学霸考经 考试资讯 财会书籍 英语学习资源 中英文简历模板,还能加入ACCA14门全科考试答疑互助QQ群(197235470/551426317),全球ACCAer前辈们帮你免费答疑。

    回答:

    什么是VBA?它有什么作用?

    什么是VBA?它有什么作用?

     

    你是否还在一边用着鼠标一边敲打着键盘,是否看着别人手指健步如飞地敲打键盘心里满满都是崇拜和羡慕。现在,不用羡慕别人了,师姐把准备藏私的Excel技能都拿出来跟大家一起分享,跟着师姐一起来学习下吧。

    先说一个简单的吧。

     A.实现Excel中没有实现的功能。

     A.实现Excel中没有实现的功能。

    首先安装对应的xlrd和xlwt

    快捷键篇

    1、如下图,在同一文件夹里有两个excel文件,一个文件名是“城市基础数据.xls”,里面是原始数据,现在需要将原始数据里的全部或部分数据同步到另一个文件“新数据.xls”这个文件里。

     B.提高运行速度。

     B.提高运行速度。

    打开cmd命令窗口输入pip install xlrd和pip install xlwt就可以安装。之后输入pip list检查是否成功配置:

    No.1:快速求和?用 “Alt =”

    新葡亰496net 1

     C.编写自定义函数。

     C.编写自定义函数。

    新葡亰496net 2 

    Excel的函数功能非常强悍,求和应该是最常用到的函数之一了。只需要连续按下快捷键“alt”和“=”就可以求出一列数字的和。

    2、同时打开这两个文件。如下图,这是“城市基础数据.xls”文件表格里的内容。

     D.实现自动化功能。

     D.实现自动化功能。

     

    No.2:快速选定不连续的单元格

    新葡亰496net 3

     E.通过插入窗体做小型管理软件。

     E.通过插入窗体做小型管理软件。

    xlrd操作#

    接下来就是常用的语法操作:

     

    excel_data = xlrd.open_workbook(文件路径')#得到对应的工作表

    sheet = excel_data.sheets()[工作表序号]#得到对应工作表中的某一个表格

    sheet.row_values(2)#对应的某一行的数据

    sheet.cell(6,1).value#对应某一列的数据

     

    新葡亰496net 4 

     

    以该表格为例先试一下对应的语句:

    新葡亰496net 5

    先指定对应的表格和其中的某一个表,否则会提示出错编译不通过。将以上代码运行得到:   

    新葡亰496net 6

    源码如下:

    import xlrd

    import xlwt

    excel_data = xlrd.open_workbook(文件路径')

    excel_data = xlrd.open_workbook(r'C:Usershys macDesktop实用的excel表格模板.xls')

    sheet = excel_data.sheets()[工作表序号]

    sheet = excel_data.sheets()[0]

    print(sheet.row_values(2)) #打印某一行数据

    print(sheet.col_values(1))#打印某一列

    print( )

    print ( sheet.cell(6,1).value)#打印某个具体值

     

    运行结果如下:

    * *

    新葡亰496net 7 

    对比表格得到一些值得注意的地方,指定的行数列数是从0开始,打开指定的表格时要注意绝对路径时要连同文件名和文件后缀也要带上才能成功读取数据。

     

     

    接下来实验读取指定的某个单元格的数据:

     

    sheet.cell(行,列).value

     

    新葡亰496net 8 

    运行得到:

    新葡亰496net 9 

    对比表格得到数据:

    新葡亰496net 10 

    是其中的(7,B),和之前提到的从零开始计数是一致的。

     

        除了以上列举的一些操作外还有其他的常见语句可以在相关文档和官网中查看,文末有相关链接,接下来实验另一个xlwt库以实现对excel表格的写入操作。

    按下组合键“Shift F8”,激活“添加选定”模式,此时工作表下方的状态栏中会显示出“添加到所选内容”字样,以后分别单击不连续的单元格或单元格区域即可选定,而不必按住Ctrl键不放。

    3、“新数据.xls”打开后,在其中一个工作表A1单元格输入“=”号,然后用鼠标选择“城市基础数据.xls”这个文件,并点击A1单元格,然后回车确定,在“新数据.xls”A1单元格就会生成公式“=[城市基础数据.xls]Sheet1!$A$1”。

    VBA在哪里存放的?怎么运行?

    VBA在哪里存放的?怎么运行?

    xlwt操作#

        对于excel表格一般关心的问题在于以下几个方面:

    • 创建工作薄和表
    • 写入单元格
    • 常见格式设置(货币文本等)
    • 创建公式
    • 保存

    接下来依次尝试以上提到的各个功能:

    1. 工作薄和表对应的对象为:workbook,sheet

          新葡亰496net 11

          2.单元格赋值:

            新葡亰496net 12

        这里尝试了一下采用负数

           新葡亰496net 13

        编译没有问题留作后面保存后检查结果是否正确。

            3.格式设置:

            新葡亰496net 14

           可见对应传入参数除行列和值外还包括style这一默认省略的参数。这里试验设置的格式为加粗。其他格式可以参照查找文末文档实现。这里有一些常见得其他格式:

    style = easyxf(num_format_str='$#,##0.00')

    # or set it directly on the style object

    style = easyxf('font: bold 1')

    style.num_format_str = '$#,##0.00'

    sheet.write(0, 0, '100.00', style)

            4.创建公式:

            使用xlwt.Formula可以实现Excel公式。

            sheet.write(0, 0, xlwt.Formula('HYPERLINK(""; "click me")'))

            5.保存操作:

            workbook.save("Python.xls")

            wbk.save('路径名')    

            这里值得提醒的是工作表的命名要小于31个字符且不能包括特殊字符(:。,等)。

    No.3:改变数字格式

    新葡亰496net 15

     A.模块中

     A.模块中

         运行结果:

            按照之前的坑(-1,0)这里试运行结果:

    # encoding : utf-8 
    import xlrd
    import xlwt

    workbook = xlwt.Workbook() 
    sheet = workbook.add_sheet("Sheet 1") 

    #创建工作簿(workbook)和工作表(sheet)

    sheet.write(-1, 0, 'Python')#行列对应

    style = xlwt.easyxf('font: bold 1')
    sheet.write(1, 1, 'style ', style)

    workbook.save('C:Usershys macDesktopmr.cpython.xls') 

           报错结果如下:

    SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escape

            遇到了文件编码的问题,修改后一句:

    workbook.save(r'C:Usershys macDesktopmr.cpython.xls')          

    新葡亰496net 16

            就回到了一开始留下的坑,单元格赋值规则应该与使用习惯一致不能为负数。最后修改得到:

    import xlrd
    import xlwt

    workbook = xlwt.Workbook() 
    sheet = workbook.add_sheet("Sheet 1") 

    #创建工作簿(workbook)和工作表(sheet)

    sheet.write(1, 0, 'Python')#行列对应

    style = xlwt.easyxf('font: bold 1')
    sheet.write(1, 1, 'style ', style)

    workbook.save(r'C:Usershys macDesktopmr.cpython1.xls')  #文件路径要存在且不能同名

    新葡亰496net 17

    新葡亰496net 18

    Excel的快捷键并不是杂乱无章的,而是遵循了一定的逻辑。如果你想快速改变数字的格式,比如就能立刻把数字加上美元符号,因为符号$和数字4共用了同一个键。同理,“Ctrl shift 5”能迅速把数字改成百分比(%)的形式。

    4、删除公式中的绝对引用符号“$”,公式为“=[城市基础数据.xls]Sheet1!A1”,然后向左和向下复制公式。(当然公式也完全可以用键盘输入)

       在Excel 2010中若没有“开发工具”项,通过“文件”——“选项”——“自定义功能区”——选中“开发工具”——“确定”(图1)。

       在Excel 2010中若没有“开发工具”项,通过“文件”——“选项”——“自定义功能区”——选中“开发工具”——“确定”(图1)。

            结语和资料:

            到这里这两个excel处理的模块操作基本结束了,还有其他实现相关功能的模块例如 openpyxl和win32com等有机会再写一篇作为横向对比的博文。知乎传送门欢迎留言交流。创作不易,保留权利。python学习交流群:125240963

    转载至:

    No.4:一键展现所有公式 “CTRL ”

    新葡亰496net 19

    (注:为了提高word2010中插入的图片的质量,“文件”——“选项”——“高级”——选中“不压缩文件图像质量”——“确定”。)

    (注:为了提高word2010中插入的图片的质量,“文件”——“选项”——“高级”——选中“不压缩文件图像质量”——“确定”。)

    当你试图检查数据里有没有错误时,能够一键让数字背后的公式显示出来。“`”键就在数字1键的左边。

    5、复制后就得到与“城市基础数据.xls”某工作表完全一样的数据,基础表数据发生变化,目标表也随之变化。

     

     

    No.5:双击实现快速应用函数

    新葡亰496net 20

    图1 选中“文件”—“选项”

    图1 选中“文件”—“选项”

    同一个函数就不用一个一个敲啦。当你设置好了第一行单元格的函数,只需要把光标移动到单元格的右下角,等到它变成一个小加号时,双击,公式就会被应用到这一列剩下的所有单元格里。这是不是比用鼠标拖拉容易多了?!

    6、需要说明的是上述同步变化是在两张表同时打开的情况下,若打开目标表之前没有打开基础表,会出现如下提示窗口,点击“更新”即可完成数据同步。

    图2 ”自定义功能区”—“开发工具”——“确定”

    图2 ”自定义功能区”—“开发工具”——“确定”

    No.6:快速增加或删除一列

    新葡亰496net 21

     

     

    对于那些整天要和Excel打交道的人来说,这个窍门或许能为你节省一点时间。当你想快速插入一列时,键入Ctrl

    回答:

    图3 最终的界面多出了“开发工具”选项卡

    图3 最终的界面多出了“开发工具”选项卡

    • Shift ‘=' (Shift ‘='其实就是 号啦)就能在你所选中那列的左边插入一列,而Ctrl ‘-‘(减号)就能删除你所选中的一列。

    可以使用Excel函数:Vlookup

     

     

    No.7:快速调整列宽

    举例:同步A车型物料表 表1的单价到B车型的物料表 表2。(注意事项表1作为基础数据,A列料号必须是唯一的,否则公式出错,有重复的话公式选取最上面的一个数据同步,如下面5-8行)。

                                                                   图4 代码存放在“模块”中

                                                                   图4 代码存放在“模块”中

    想让Excel根据你的文字内容自动调整列宽?你只需要把鼠标移动到列首的右侧,双击一下就大功告成啦~

    新葡亰496net 22

    B.运行宏

    B.运行宏

    No.8:双击格式刷

    方法:

    单击向右的绿三角,即可以运行。

    单击向右的绿三角,即可以运行。

    格式刷当然是一个伟大的工具。不过,你知道只要双击它,就可以把同一个格式“刷”给多个单元格么?

    1.在B车型物料表的E2坐标单元格输入 等号-右上角框线处选择Vlookup函数(用过一次后就不需要选)-确定。

     

     

    No.9:在不同的工作表之间快速切换

    新葡亰496net 23

       

       

    在不同的工作表之间切换,不代表你的手真的要离开键盘(可以想象如果你学会了这些酷炫狂拽的快捷键,你根本不需要摸鼠标)。“Ctrl

    2.以B表料号链接A表料号的单价,在截图里面的弹窗1位置点击B表C2单元格-2位置框选A表A-F列的列标-位置3处填5-位置4填0-点确定。
    新葡亰496net 24

                                                       图5 右绿三角运行  

                                                       图5 右绿三角运行  

    • PgDn”可以切换到右边的工作表,反之,“Ctrl PgUp”可以切换回左边。呃,不过Mac用户似乎与这个快捷键无缘了。

    3.选中B表的E2单元格的右下角下拉公式。

                                                              图6  选中test并“运行”

                                                              图6  选中test并“运行”

    No.10:用F4锁定单元格

    新葡亰496net 25

     

     

    在Excel里根据函数填充数据的时候,有时候你希望你引用的单元格下拉时随之变化,也有时候你并不这么想。当你要“绝对引用”——也就是锁定单元格的时候,你必须在行列前加$符号。想手动去打这些美元符号?简直是疯了。

    结果如下图。

                                                        图7 运行结果

                                                        图7 运行结果

    其实有一个简单的技巧,就是在你选定单元格之后,按F4键输入美元符号并锁定。如果你继续按F4,则会向后挨个循环:锁定单元格、锁定数字、锁定大写字母、解除锁定。

    新葡亰496net 26

    3.什么是宏?宏和VBA有什么关系?

    3.什么是宏?宏和VBA有什么关系?

    函数&工具篇

    同理如果B表只有料号一列有数据,其他数据也可以用Vlookup同步更新。

     宏(Macro),是一种批量处理。

     宏(Macro),是一种批量处理。

    函数是excel中最重要的分析工具,面对400多个excel函数新手应该从哪里入手呢?下面是实际工作中最常用:两个函数和一个工具

    回答:

     宏通常既可以录制又可以手动编程,而VBA一般是通过编程完成。宏可以和VBA相结合使用。

     宏通常既可以录制又可以手动编程,而VBA一般是通过编程完成。宏可以和VBA相结合使用。

    No.1:Vlookup 函数

    可以参考这篇文章在excel和wps中使用SUMIFS函数对满足多重条件的单元格求和

    4.录制一个宏。

    4.录制一个宏。

    Vlookup干啥用的?数据查找、表格核对、表格合并。简单讲,Vlookup是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。

    哎,答案文不对题,我本来是回答另外一个问题的。

      A.“开发工具”——“录制宏”——宏名为“输入100”——“录制”——在A1单元格中输入100——“停止”。

      A.“开发工具”——“录制宏”——宏名为“输入100”——“录制”——在A1单元格中输入100——“停止”。

    Vlookup基本公式VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找)

      B.“宏”——选中“输入100”——“执行”。

      B.“宏”——选中“输入100”——“执行”。

    No.2:Sumif 和 Countif 函数

      

      

    按条件求和,按条件计数,很多复杂的数据核对也需要用到这2个函数。

    5.编写一个宏。

    5.编写一个宏。

    Sumif(判断区域,条件,求和区域)

      A.“开发工具”——“Visual Basic”——“视图”——“工程资源管理器”——“插入”——“模块”——在右侧输入代码:

      A.“开发工具”——“Visual Basic”——“视图”——“工程资源管理器”——“插入”——“模块”——在右侧输入代码:

    Counif(判断区域,条件)

       新葡亰496net 27

       新葡亰496net 28

    No.3:Pivot Table 数据透视表

      B. 单击绿右三角即可运行。或者关闭VBA编辑窗口,单击“宏”——选中“test”——“执行”。

      B. 单击绿右三角即可运行。或者关闭VBA编辑窗口,单击“宏”——选中“test”——“执行”。

    选定源数据--“插入”--“数据透视表”,弹出数据透视表的对话框。数据透视表可以插入到新建的Sheet页,也可以在当前Sheet中插入。

     

     

    本例中,我们选择的是在新Sheet中插入数据透视表,可以看一下数据透视表的界面。

    6.VBA语句

    6.VBA语句

    左边是数据透视表的数据展示部分,靠右边是数据透视表。数据透视表字段又分为上下两部分:

      A.宏程序语句。

      A.宏程序语句。

    1、上面显示的是数据透视表目前的字段,都是源数据第一行的标题(日期、销售员)。

       新葡亰496net 29

       新葡亰496net 30

    2、下面分成了4个部分:筛选器、列、行、值;我们可以把上方的字段鼠标左键拖动到这4部分里面。

      B.函数程序语句

      B.函数程序语句

    是不是都学会了呢,还没学会的可以收藏,以后慢慢学习。

      新葡亰496net 31

      新葡亰496net 32

     C.在程序中应运语句。

     C.在程序中应运语句。

      新葡亰496net 33

      新葡亰496net 34

    D.循环语句。

    D.循环语句。

      新葡亰496net 35

      新葡亰496net 36

    7.VBA对象

    7.VBA对象

      A.工作簿对象

      A.工作簿对象

         Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿

         Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿

         Workbooks ("工作簿名称")

         Workbooks ("工作簿名称")

         ActiveWorkbook 正在操作的工作簿

         ActiveWorkbook 正在操作的工作簿

         ThisWorkBook '代码所在的工作簿

         ThisWorkBook '代码所在的工作簿

      B.工作表对象

      B.工作表对象

         Sheets("工作表名称")

         Sheets("工作表名称")

         Sheet1 表示第一个插入的工作表,Sheet2表示第二个插入的工作表....

         Sheet1 表示第一个插入的工作表,Sheet2表示第二个插入的工作表....

         Sheets(n) 表示按排列顺序,第n个工作表

         Sheets(n) 表示按排列顺序,第n个工作表

         ActiveSheet 表示活动工作表,光标所在工作表

         ActiveSheet 表示活动工作表,光标所在工作表

         worksheet 也表示工作表,但不包括图表工作表、宏工作表等。

         worksheet 也表示工作表,但不包括图表工作表、宏工作表等。

      C.单元格对象

      C.单元格对象

         cells 所有单元格

         cells 所有单元格

         Range ("单元格地址")

         Range ("单元格地址")

         Cells(行数,列数)    Range(“B3”)和Cells(3,2)表示相同的单元格

         Cells(行数,列数)    Range(“B3”)和Cells(3,2)表示相同的单元格

         Activecell 正在选中或编辑的单元格

         Activecell 正在选中或编辑的单元格

         Selection 正被选中或选取的单元格或单元格区域

         Selection 正被选中或选取的单元格或单元格区域

    8. VBA属性

    8. VBA属性

        VBA属性就是VBA对象所具有的特点,表示某个对象的属性如下:对象.属性=属性值

        VBA属性就是VBA对象所具有的特点,表示某个对象的属性如下:对象.属性=属性值

        Sub ttt()

        Sub ttt()

          Range("a1").Value = 100     ’给单元格a1填充数值100

          Range("a1").Value = 100     ’给单元格a1填充数值100

        End Sub

        End Sub

                                                                                                                                        

                                                                                                                                        

        Sub ttt1()

        Sub ttt1()

          Sheets(1).Name = "工作表改名了"   ’给工作簿重命名为“工作表改名了”

          Sheets(1).Name = "工作表改名了"   ’给工作簿重命名为“工作表改名了”

        End Sub

        End Sub

                                                                                                                                           

                                                                                                                                           

        Sub ttt2()

        Sub ttt2()

           Sheets("Sheet2").Range("a1").Value = "abcd"   ’给sheet2工作表的a1单元格填充字符串“abcd”

           Sheets("Sheet2").Range("a1").Value = "abcd"   ’给sheet2工作表的a1单元格填充字符串“abcd”

        End Sub

        End Sub

                                                                                                                                            

                                                                                                                                            

          Sub ttt3()

          Sub ttt3()

         ’单元格的内部的填充色

         ’单元格的内部的填充色

              Range("A2").Interior.ColorIndex = 3  ’将A2单元格的背景颜色设置为红色

              Range("A2").Interior.ColorIndex = 3  ’将A2单元格的背景颜色设置为红色

             Range("A2").Font.ColorIndex = 3      ’将A2单元格的字体颜色设置为红色

             Range("A2").Font.ColorIndex = 3      ’将A2单元格的字体颜色设置为红色

          End Sub

          End Sub

                                                                                                                                               

                                                                                                                                               

    9.VBA方法

    9.VBA方法

       VBA方法是作用于VBA对象上的动作,表示用某个方法作用于VBA的对象上,可以用下面的格式:

       VBA方法是作用于VBA对象上的动作,表示用某个方法作用于VBA的对象上,可以用下面的格式:

       对象.方法  参数名称:=参数值

       对象.方法  参数名称:=参数值

                                                                                                                                                

                                                                                                                                                

      Sub ttt4()

      Sub ttt4()

          ’Range("A1").Copy Destination:= Range("A2")

          ’Range("A1").Copy Destination:= Range("A2")

          Range("A1").Copy Range("A2")   ’将A1中的内容复制到A2

          Range("A1").Copy Range("A2")   ’将A1中的内容复制到A2

      End Sub

      End Sub

                                                                                                                                                

                                                                                                                                                

      Sub ttt5()

      Sub ttt5()

        Sheet1.Move before:=Sheets("Sheet3")   ’将sheet1表移动到sheet3之前

        Sheet1.Move before:=Sheets("Sheet3")   ’将sheet1表移动到sheet3之前

      End Sub

      End Sub

                                                                                                                                               

                                                                                                                                               

    10.在一个乡政府的文件中要求将Excel中一个表格的身份证号,配对并填充到另一个表中。宏代码如下:

    10.在一个乡政府的文件中要求将Excel中一个表格的身份证号,配对并填充到另一个表中。宏代码如下:

         Sub 配对()

         Sub 配对()

          Dim I, J As Integer

          Dim I, J As Integer

          For I = 3 To 225

          For I = 3 To 225

               For J = 4 To 930

               For J = 4 To 930

                   If Sheets("Sheet4").Range("b" & I).Value = Sheets("黄门乡").Range("b" & J).Value Then   

                   If Sheets("Sheet4").Range("b" & I).Value = Sheets("黄门乡").Range("b" & J).Value Then   

                         Sheets("Sheet4").Range("e" & I).Value = Sheets("黄门乡").Range("d" & J).Value

                         Sheets("Sheet4").Range("e" & I).Value = Sheets("黄门乡").Range("d" & J).Value

                  End If

                  End If

             Next J

             Next J

           Next I

           Next I

         End Sub

         End Sub

         ’竟然没写入End IF,提示错误“Next 缺少 For”

         ’竟然没写入End IF,提示错误“Next 缺少 For”

    11.判断语句

    11.判断语句

       A.if判断语句

       A.if判断语句

                                                                                                                               

                                                                                                                               

         Sub 判断1() '单条件判断

         Sub 判断1() '单条件判断

           If Range("a1").Value > 0 Then

           If Range("a1").Value > 0 Then

                Range("b1") = "正数"

                Range("b1") = "正数"

           Else

           Else

                Range("b1") = "负数或0"

                Range("b1") = "负数或0"

           End If

           End If

         End Sub

         End Sub

      B.IIF判断语句

      B.IIF判断语句

                                                                                                                                

                                                                                                                                

        Sub 判断4()

        Sub 判断4()

            Range("a3") = IIf(Range("a1") <= 0, "负数或零", "负数")

            Range("a3") = IIf(Range("a1") <= 0, "负数或零", "负数")

        End Sub

        End Sub

      C.select判断

      C.select判断

                                                                                                                                 

                                                                                                                                 

        Sub 判断1() '单条件判断

        Sub 判断1() '单条件判断

          Select Case Range("a1").Value

          Select Case Range("a1").Value

          Case Is > 0

          Case Is > 0

             Range("b1") = "正数"

             Range("b1") = "正数"

          Case Else

          Case Else

             Range("b1") = "负数或0"

             Range("b1") = "负数或0"

          End Select

          End Select

        End Sub

        End Sub

                                                                                                                                   

                                                                                                                                   

        Sub 判断2() '多条件判断

        Sub 判断2() '多条件判断

            Select Case Range("a1").Value

            Select Case Range("a1").Value

             Case Is > 0

             Case Is > 0

               Range("b1") = "正数"

               Range("b1") = "正数"

             Case Is = 0

             Case Is = 0

               Range("b1") = "0"

               Range("b1") = "0"

             Case Else

             Case Else

               Range("b1") = "负数"

               Range("b1") = "负数"

             End Select

             End Select

           End Sub

           End Sub

                                                                                                                                                         

                                                                                                                                                         

          Sub 判断3()

          Sub 判断3()

             If Range("a3") < "G" Then

             If Range("a3") < "G" Then

                MsgBox "A-G"

                MsgBox "A-G"

             End If

             End If

          End Sub

          End Sub

    D.区间判断

    D.区间判断

                                                                                                                                         

                                                                                                                                         

      Sub if区间判断()

      Sub if区间判断()

      If Range("a2") <= 1000 Then

      If Range("a2") <= 1000 Then

        Range("b2") = 0.01

        Range("b2") = 0.01

      ElseIf Range("a2") <= 3000 Then

      ElseIf Range("a2") <= 3000 Then

        Range("b2") = 0.03

        Range("b2") = 0.03

      ElseIf Range("a2") > 3000 Then

      ElseIf Range("a2") > 3000 Then

        Range("b2") = 0.05

        Range("b2") = 0.05

      End If

      End If

      End Sub

      End Sub

                                                                                                                                   

                                                                                                                                   

    Sub select区间判断()

    Sub select区间判断()

     Select Case Range("a2").Value

     Select Case Range("a2").Value

     Case 0 To 1000

     Case 0 To 1000

       Range("b2") = 0.01

       Range("b2") = 0.01

     Case 1001 To 3000

     Case 1001 To 3000

       Range("b2") = 0.03

       Range("b2") = 0.03

     Case Is > 3000

     Case Is > 3000

       Range("b2") = 0.05

       Range("b2") = 0.05

     End Select

     End Select

    End Sub

    End Sub

                                                                                                                                      

                                                                                                                                      

    12.循环语句

    12.循环语句

       A.单语句代码

       A.单语句代码

         Sub t1()

         Sub t1()

          Range("d2") = Range("b2") * Range("c2")   ’将b2单元格与c2单元格相乘并赋值给d2单元格

          Range("d2") = Range("b2") * Range("c2")   ’将b2单元格与c2单元格相乘并赋值给d2单元格

          Range("d3") = Range("b3") * Range("c3")   ’将b3单元格与c3单元格相乘并赋值给d3单元格

          Range("d3") = Range("b3") * Range("c3")   ’将b3单元格与c3单元格相乘并赋值给d3单元格

          Range("d4") = Range("b4") * Range("c4")   ’将b4单元格与c4单元格相乘并赋值给d4单元格

          Range("d4") = Range("b4") * Range("c4")   ’将b4单元格与c4单元格相乘并赋值给d4单元格

          Range("d5") = Range("b5") * Range("c5")   ’将b5单元格与c5单元格相乘并赋值给d5单元格

          Range("d5") = Range("b5") * Range("c5")   ’将b5单元格与c5单元格相乘并赋值给d5单元格

          Range("d6") = Range("b6") * Range("c6")   ’将b6单元格与c6单元格相乘并赋值给d6单元格

          Range("d6") = Range("b6") * Range("c6")   ’将b6单元格与c6单元格相乘并赋值给d6单元格

         End Sub

         End Sub

      B.For each 循环语句

      B.For each 循环语句

        Sub s1()

        Sub s1()

          Dim rg As Range

          Dim rg As Range

          For Each rg In Range("a1:b7,d5:e9")

          For Each rg In Range("a1:b7,d5:e9")

            If rg = "" Then

            If rg = "" Then

               rg = 0

               rg = 0

            End If

            End If

          Next rg

          Next rg

        End Sub

        End Sub

       ’注:在a1到b7单元区域和d5到e9单元格区域中的遍历所有单元格,若为空,就赋值0。

       ’注:在a1到b7单元区域和d5到e9单元格区域中的遍历所有单元格,若为空,就赋值0。

    C、For Next语句

    C、For Next语句

       Sub t2()

       Sub t2()

       Dim x As Integer

       Dim x As Integer

        For x = 10000 To 2 Step -3

        For x = 10000 To 2 Step -3

         Range("d" & x) = Range("b" & x) * Range("c" & x)

         Range("d" & x) = Range("b" & x) * Range("c" & x)

        Next x

        Next x

       End Sub

       End Sub

       注:将10000行数据中每隔3行的b列和c列相乘赋值给d列。

       注:将10000行数据中每隔3行的b列和c列相乘赋值给d列。

    D、For Each语句(应用offset方法来制定单元格)

    D、For Each语句(应用offset方法来制定单元格)

       Sub t3()

       Sub t3()

       Dim rg As Range

       Dim rg As Range

        For Each rg In Range("d2:d18")

        For Each rg In Range("d2:d18")

         rg = rg.Offset(0, -1) * rg.Offset(0, -2)

         rg = rg.Offset(0, -1) * rg.Offset(0, -2)

        Next rg

        Next rg

       End Sub

       End Sub

       ’注:offset就是偏移,针对d2而言,Offset(0, -1)指的就是向左移动1个单元格,即c2;而Offset(0, -2)指的就是向左移动2个单元格,即b2;第一个参数是垂直移动,正为向上,负为向下;第二个参数是水平移动,正为向右,负为向左。

       ’注:offset就是偏移,针对d2而言,Offset(0, -1)指的就是向左移动1个单元格,即c2;而Offset(0, -2)指的就是向左移动2个单元格,即b2;第一个参数是垂直移动,正为向上,负为向下;第二个参数是水平移动,正为向右,负为向左。

       

       

                    图12 offset函数分析图

                    图12 offset函数分析图

    E.Do ……Loop Until语句

    E.Do ……Loop Until语句

       Sub t4()

       Sub t4()

       Dim x As Integer

       Dim x As Integer

        x = 1

        x = 1

        Do

        Do

          x = x 1

          x = x 1

          Cells(x, 4) = Cells(x, 2) * Cells(x, 3)

          Cells(x, 4) = Cells(x, 2) * Cells(x, 3)

        Loop Until x = 18

        Loop Until x = 18

       End Sub

       End Sub

       ’注:Cell(行,列),即上文中的x指的是行。将第二列和第三列相乘赋值给第四列。

       ’注:Cell(行,列),即上文中的x指的是行。将第二列和第三列相乘赋值给第四列。

    F.Do While……Loop语句

    F.Do While……Loop语句

       Sub t5()

       Sub t5()

        x = 1

        x = 1

        Do While x < 18

        Do While x < 18

          x = x 1

          x = x 1

          Cells(x, 4) = Cells(x, 2) * Cells(x, 3)

          Cells(x, 4) = Cells(x, 2) * Cells(x, 3)

        Loop

        Loop

       End Sub

       End Sub

       ’注:Cell(行,列),即上文中的x指的是行。将第二列和第三列相乘赋值给第四列。

       ’注:Cell(行,列),即上文中的x指的是行。将第二列和第三列相乘赋值给第四列。

    G.Do ……Loop Until语句

    G.Do ……Loop Until语句

    新葡亰496net,   Sub s2()

       Sub s2()

        Dim x As Integer

        Dim x As Integer

        Do

        Do

          x = x 1

          x = x 1

          If Cells(x 1, 1) <> Cells(x, 1) 1 Then

          If Cells(x 1, 1) <> Cells(x, 1) 1 Then

             Cells(x, 2) = "断点"

             Cells(x, 2) = "断点"

             Exit Do

             Exit Do

          End If

          End If

        Loop Until x = 14

        Loop Until x = 14

       End Sub

       End Sub

       ’判断第1列中的数据不连续,就在其后的单元格输入一个“断点”。

       ’判断第1列中的数据不连续,就在其后的单元格输入一个“断点”。

    13. 学习变量

    13. 学习变量

       A、什么是变量?

       A、什么是变量?

         所谓变量,就是可变的量。就好象在内存中临时存放的一个小盒子,这个小盒子放的什么物体不固定。

         所谓变量,就是可变的量。就好象在内存中临时存放的一个小盒子,这个小盒子放的什么物体不固定。

         Dim m As Integer

         Dim m As Integer

         Sub t1()

         Sub t1()

           Dim X As Integer 'x就是一个整形变量

           Dim X As Integer 'x就是一个整形变量

           For X = 1 To 10

           For X = 1 To 10

             Cells(X, 1) = X

             Cells(X, 1) = X

            Next X

            Next X

          End Sub

          End Sub

       B、小盒子里可以放什么?

       B、小盒子里可以放什么?

     

     

          1、放数字   2、放文本

          1、放数字   2、放文本

            Sub t2()

            Sub t2()

           Dim st As String    ’st存放字符串

           Dim st As String    ’st存放字符串

           Dim X As Integer    ’X存放整数类型

           Dim X As Integer    ’X存放整数类型

           For X = 1 To 10

           For X = 1 To 10

            st = st & "Excel精英培训"

            st = st & "Excel精英培训"

           Next X

           Next X

           End Sub

           End Sub

         3、 放对象

         3、 放对象

           Sub t3()

           Sub t3()

            Dim rg As Range      ’rg是单元格类型

            Dim rg As Range      ’rg是单元格类型

             Set rg = Range("a1") ’Set关键词就是给对象变量指定值

             Set rg = Range("a1") ’Set关键词就是给对象变量指定值

              rg = 100

              rg = 100

            End Sub

            End Sub

        4、 放数组

        4、 放数组

           Sub t4()

           Sub t4()

              Dim arr(1 To 10) As Integer, X As Integer  

              Dim arr(1 To 10) As Integer, X As Integer  

              For X = 1 To 10

              For X = 1 To 10

                arr(X) = X

                arr(X) = X

              Next X

              Next X

           End Sub

           End Sub

          ’数组arr(1),arr(2),arr(3)……arr(10)都是整形类型

          ’数组arr(1),arr(2),arr(3)……arr(10)都是整形类型

    C、变量的类型和声明

    C、变量的类型和声明

       1 变量的类型

       1 变量的类型

         (1)整型(Integer):

         (1)整型(Integer):

              表示-32768至32767之间的整数           例如:10   110   20

              表示-32768至32767之间的整数           例如:10   110   20

         (2)长整型(Long):

         (2)长整型(Long):

              表示-2,147,483,648至2,147,483,647之间的整数

              表示-2,147,483,648至2,147,483,647之间的整数

               例如:长整型的书写:    23454444554     

               例如:长整型的书写:    23454444554     

         (3)单精度实型(Single):

         (3)单精度实型(Single):

               有效数为7位 表示-3.37E 38至3.37E 38之间的实数

               有效数为7位 表示-3.37E 38至3.37E 38之间的实数

         (4)双精度实型(Double):

         (4)双精度实型(Double):

               有效数为15位

               有效数为15位

         (5)字符型(String)

         (5)字符型(String)

             在VB中字符串常量是用双引号“ ”括起的一串字符,例 如"ABC","abcdefg","123","0","VB程序设计"等。

             在VB中字符串常量是用双引号“ ”括起的一串字符,例 如"ABC","abcdefg","123","0","VB程序设计"等。

        (6) 逻辑型(Boolean)

        (6) 逻辑型(Boolean)

             逻辑型又称布尔型,其数据只有True(真)和False(假)两个值

             逻辑型又称布尔型,其数据只有True(真)和False(假)两个值

        (7)日期型(Date)

        (7)日期型(Date)

             表示日期和时间

             表示日期和时间

             用两个“#”符号把日期和时间的值括起来       如:#08/20/2001#、#2001-08-20#

             用两个“#”符号把日期和时间的值括起来       如:#08/20/2001#、#2001-08-20#

       2 为什么要声明变量

       2 为什么要声明变量

         变量通过索引可以存储更多的值,在循环结构中的作用大。

         变量通过索引可以存储更多的值,在循环结构中的作用大。

       3 声明变量

       3 声明变量

          dim public

          dim public

    D、变量的存活周期

    D、变量的存活周期

       1 过程级变量:过程结束,变量值释放

       1 过程级变量:过程结束,变量值释放

           '如t1

           '如t1

       2 模块级变量:变量的值只在本模块中保持,工作簿关闭时随时释放   

       2 模块级变量:变量的值只在本模块中保持,工作簿关闭时随时释放   

     

     

             Sub t6()

             Sub t6()

                m = 1

                m = 1

             End Sub

             End Sub

             

             

            Sub t5()

            Sub t5()

              MsgBox m

              MsgBox m

              m = 7

              m = 7

             End Sub

             End Sub

     

     

       3 全局级变量: 在所有的模块中都可以调用,值会保存到EXCEL关闭时才会被释放。

       3 全局级变量: 在所有的模块中都可以调用,值会保存到EXCEL关闭时才会被释放。

           ' public 变量

           ' public 变量

             Sub t7()

             Sub t7()

               MsgBox qq

               MsgBox qq

             End Sub

             End Sub

     E、变量的释放

     E、变量的释放

         一般情况下,过程级变量在过程运行结束后就会自动从内存中释放,而只有一些从外部借用的对象变量才需要使用set 变量=nothing进行释放。

         一般情况下,过程级变量在过程运行结束后就会自动从内存中释放,而只有一些从外部借用的对象变量才需要使用set 变量=nothing进行释放。

    14.函数与公式

    14.函数与公式

    A、用VBA在单元格中输入普通公式

    A、用VBA在单元格中输入普通公式

    Option Explicit

    Option Explicit

         Sub t1()

         Sub t1()

           Range("d2") = "=b2*c2"   ’将b2乘以c2赋值给d2

           Range("d2") = "=b2*c2"   ’将b2乘以c2赋值给d2

         End Sub

         End Sub

         新葡亰496net 37

         新葡亰496net 38

         Sub t2()

         Sub t2()

          Dim x As Integer

          Dim x As Integer

          For x = 2 To 6

          For x = 2 To 6

           Cells(x, 4) = "=b" & x & "*c" & x     ’将b列乘以c列赋值给d列

           Cells(x, 4) = "=b" & x & "*c" & x     ’将b列乘以c列赋值给d列

          Next x

          Next x

         End Sub

         End Sub

         新葡亰496net 39

         新葡亰496net 40

     

     

    B、用VBA在单元格输入带引号的公式

    B、用VBA在单元格输入带引号的公式

         Sub t3()

         Sub t3()

         Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" '遇到单引号就把单引号加倍

         Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" '遇到单引号就把单引号加倍

         End Sub

         End Sub

         注:在A2:A6单元格区域中,找到b项,共两个,将所对应的B列中的单元格值相加,即3 5=8。

         注:在A2:A6单元格区域中,找到b项,共两个,将所对应的B列中的单元格值相加,即3 5=8。

          新葡亰496net 41

          新葡亰496net 42

    C、用VBA在单元格中输入数组公式

    C、用VBA在单元格中输入数组公式

        Sub t4()

        Sub t4()

          Range("c9").FormulaArray = "=SUM(B2:B6*C2:C6)"

          Range("c9").FormulaArray = "=SUM(B2:B6*C2:C6)"

    End Sub

    End Sub

    ’注:将b列和c列相乘的结果

    ’注:将b列和c列相乘的结果

    D、利用单元格公式返回值

    D、利用单元格公式返回值

         Sub t5()

         Sub t5()

             Range("d16") = Evaluate("=SUMIF(A2:A6,""b"",B2:B6)")

             Range("d16") = Evaluate("=SUMIF(A2:A6,""b"",B2:B6)")

             Range("d9") = Evaluate("=SUM(B2:B6*C2:C6)")

             Range("d9") = Evaluate("=SUM(B2:B6*C2:C6)")

         End Sub

         End Sub

    E、借用工作表函数

    E、借用工作表函数

         Sub t6()

         Sub t6()

            Range("d8") = Application.WorksheeFunction.CountIf(Range("A1:A10"), "B")

            Range("d8") = Application.WorksheeFunction.CountIf(Range("A1:A10"), "B")

         End Sub

         End Sub

    F、利用VBA函数

    F、利用VBA函数

         Sub t7()

         Sub t7()

          Range("C20") = VBA.InStr(Range("a20"), "E")

          Range("C20") = VBA.InStr(Range("a20"), "E")

         End Sub

         End Sub

    G、编写自定义函数

    G、编写自定义函数

          Function wn()

          Function wn()

             wn = Application.Caller.Parent.Name

             wn = Application.Caller.Parent.Name

          End Function

          End Function

    15. VBE编辑器

    15. VBE编辑器

    A、工程窗口

    A、工程窗口

        a 显示工作簿工作表对象

        a 显示工作簿工作表对象

        b 窗体

        b 窗体

        c 模块

        c 模块

        d 类模块

        d 类模块

    range("a1")=10

    range("a1")=10

    '对应工程窗口的对象和模板,显示其所具体的一些特征。

    '对应工程窗口的对象和模板,显示其所具体的一些特征。

        

        

    B、代码窗口

    B、代码窗口

        a 注释文字的设置

        a 注释文字的设置

        b 代码缩进的设置

        b 代码缩进的设置

        c 代码强制转行的设置

        c 代码强制转行的设置

        d 代码运行和调试

        d 代码运行和调试

             '逐句运行

             '逐句运行

             '设置断点

             '设置断点

        e 对象列表框和过程列表框

        e 对象列表框和过程列表框

     C、立即窗口

     C、立即窗口

    立即窗口可以把运行过程中的值立即显示出来,主要用于程序的调试

    立即窗口可以把运行过程中的值立即显示出来,主要用于程序的调试

        Sub d()

        Sub d()

         Dim x As Integer, st As String

         Dim x As Integer, st As String

         For x = 1 To 10

         For x = 1 To 10

            st = st & Cells(x, 1)

            st = st & Cells(x, 1)

            Debug.Print "第" & x & "次运行结果:" & st

            Debug.Print "第" & x & "次运行结果:" & st

         Next x

         Next x

        End Sub

        End Sub

     D、本地窗口

     D、本地窗口

       '在本地窗口中可以显示运行中断时对象信息、变量值、数组信息等

       '在本地窗口中可以显示运行中断时对象信息、变量值、数组信息等

       Sub d1()

       Sub d1()

         Dim x As Integer, k As Integer

         Dim x As Integer, k As Integer

         For x = 1 To 10

         For x = 1 To 10

            k = k Cells(x, 1)

            k = k Cells(x, 1)

         Next x

         Next x

       End Sub

       End Sub

    16.VBA分支语句与End语句

    16.VBA分支语句与End语句

       

       

     

     

     A、END语句

     A、END语句

    作用:强制退出所有正在运行的程序。

    作用:强制退出所有正在运行的程序。

    B、 Exit语句:退出指定的语句

    B、 Exit语句:退出指定的语句

          a、Exit Sub语句

          a、Exit Sub语句

             Sub e1()

             Sub e1()

                 Dim x As Integer

                 Dim x As Integer

                 For x = 1 To 100

                 For x = 1 To 100

                    Cells(1, 1) = x

                    Cells(1, 1) = x

                   If x = 5 Then

                   If x = 5 Then

                     Exit Sub

                     Exit Sub

                   End If

                   End If

                Next x

                Next x

                  Range("b1") = 100

                  Range("b1") = 100

             End Sub

             End Sub

          b、Exit function语句

          b、Exit function语句

            Function ff()

            Function ff()

               Dim x As Integer

               Dim x As Integer

               For x = 1 To 100

               For x = 1 To 100

                 If x = 5 Then

                 If x = 5 Then

                   Exit Function

                   Exit Function

                 End If

                 End If

               Next x

               Next x

                 ff = 100

                 ff = 100

             End Function

             End Function

           c、Exit for语句

           c、Exit for语句

             Sub e2()

             Sub e2()

             Dim x As Integer

             Dim x As Integer

                For x = 1 To 100

                For x = 1 To 100

                  Cells(1, 1) = x

                  Cells(1, 1) = x

                  If x = 5 Then

                  If x = 5 Then

                    Exit For

                    Exit For

                  End If

                  End If

                Next x

                Next x

                  Range("b1") = 100

                  Range("b1") = 100

             End Sub

             End Sub

         d、Exit do 语句

         d、Exit do 语句

            Sub e3()

            Sub e3()

             Dim x As Integer

             Dim x As Integer

              Do

              Do

                x = x 1

                x = x 1

                 Cells(1, 1) = x

                 Cells(1, 1) = x

                 If x = 5 Then

                 If x = 5 Then

                   Exit Do

                   Exit Do

                 End If

                 End If

              Loop Until x = 100

              Loop Until x = 100

               Range("b1") = 100

               Range("b1") = 100

            End Sub

            End Sub

      C、VBA分支语句

      C、VBA分支语句

         Option Explicit

         Option Explicit

         a、Goto语句,跳转到指定的地方

         a、Goto语句,跳转到指定的地方

            Sub t1()

            Sub t1()

            Dim x As Integer

            Dim x As Integer

            Dim sr

            Dim sr

            100:

            100:

            sr = Application.InputBox("请输入数字", "输入提示")

            sr = Application.InputBox("请输入数字", "输入提示")

            If Len(sr) = 0 Or Len(sr) = 5 Then GoTo 100

            If Len(sr) = 0 Or Len(sr) = 5 Then GoTo 100

            End Sub

            End Sub

        注:“100:”就是一个Goto语句可以跳入的标志。“Len(sr)=0”表示输入框没有输入,“Len(sr) = 5”表取消。其实质就是“false”是5个字符。

        注:“100:”就是一个Goto语句可以跳入的标志。“Len(sr)=0”表示输入框没有输入,“Len(sr) = 5”表取消。其实质就是“false”是5个字符。

            新葡亰496net 43

            新葡亰496net 44

    b、gosub..return ,跳过去,再跳回来

    b、gosub..return ,跳过去,再跳回来

       Sub t2()

       Sub t2()

          Dim x As Integer

          Dim x As Integer

          For x = 1 To 10

          For x = 1 To 10

           If Cells(x, 1) Mod 2 = 0 Then GoSub 100

           If Cells(x, 1) Mod 2 = 0 Then GoSub 100

          Next x

          Next x

       Exit Sub

       Exit Sub

        100:

        100:

         Cells(x, 1) = "偶数"

         Cells(x, 1) = "偶数"

        Return    '跳到gosub 100 这一句

        Return    '跳到gosub 100 这一句

      End Sub

      End Sub

    c、on error resume next '遇到错误,跳过继续执行下一句

    c、on error resume next '遇到错误,跳过继续执行下一句

      Sub t3()

      Sub t3()

       On Error Resume Next

       On Error Resume Next

       Dim x As Integer

       Dim x As Integer

         For x = 1 To 10

         For x = 1 To 10

    您会些什么,基于Python达成excel表格读写。       Cells(x, 3) = Cells(x, 2) * Cells(x, 1)

           Cells(x, 3) = Cells(x, 2) * Cells(x, 1)

         Next x

         Next x

       End Sub

       End Sub

    d、on error goto  '出错时跳到指定的行数

    d、on error goto  '出错时跳到指定的行数

       Sub t4()

       Sub t4()

        On Error GoTo 100

        On Error GoTo 100

        Dim x As Integer

        Dim x As Integer

        For x = 1 To 10

        For x = 1 To 10

           Cells(x, 3) = Cells(x, 2) * Cells(x, 1)

           Cells(x, 3) = Cells(x, 2) * Cells(x, 1)

        Next x

        Next x

          Exit Sub

          Exit Sub

        100:

        100:

          MsgBox "在第" & x & "行出错了"

          MsgBox "在第" & x & "行出错了"

        End Sub

        End Sub

     e、on error goto 0 '取消错误跳转

     e、on error goto 0 '取消错误跳转

       Sub t5()

       Sub t5()

          On Error Resume Next

          On Error Resume Next

          Dim x As Integer

          Dim x As Integer

          For x = 1 To 10

          For x = 1 To 10

          If x > 5 Then On Error GoTo 0

          If x > 5 Then On Error GoTo 0

             Cells(x, 3) = Cells(x, 2) * Cells(x, 1)

             Cells(x, 3) = Cells(x, 2) * Cells(x, 1)

          Next x

          Next x

             Exit Sub

             Exit Sub

       End Sub

       End Sub

     

     

     

     

    17、Excel文件操作的几个概念

    17、Excel文件操作的几个概念

        A、excel文件和工作簿概念

        A、excel文件和工作簿概念

          excel文件就是excel工作簿,excel文件打开需要excel程的支持

          excel文件就是excel工作簿,excel文件打开需要excel程的支持

          Workbooks  工作簿集合,泛指excel文件或工作簿

          Workbooks  工作簿集合,泛指excel文件或工作簿

          Workbooks("A.xls"),名称为A的excel工作簿

          Workbooks("A.xls"),名称为A的excel工作簿

         Sub t1()

         Sub t1()

            Workbooks("A.xls").Sheets(1).Range("a1") = 100

            Workbooks("A.xls").Sheets(1).Range("a1") = 100

         End Sub

         End Sub

                                                               

                                                               

         workbooks(2),按打开顺序,第二个打开的工作簿。

         workbooks(2),按打开顺序,第二个打开的工作簿。

          Sub t2()

          Sub t2()

            Workbooks(2).Sheets(2).Range("a1") = 200

            Workbooks(2).Sheets(2).Range("a1") = 200

         End Sub

         End Sub

    您会些什么,基于Python达成excel表格读写。                                                           

                                                               

         ActiveWorkbook ,当打开多个excel工作簿时,你正在操作的那个就是ActiveWorkbook(活动工作簿)

         ActiveWorkbook ,当打开多个excel工作簿时,你正在操作的那个就是ActiveWorkbook(活动工作簿)

         Thisworkbook,VBA程序所在的工作簿,无论你打开多少个工作簿,无论当前是哪个工作簿是活动的,thisworkbook就是指它所在的工作簿。

         Thisworkbook,VBA程序所在的工作簿,无论你打开多少个工作簿,无论当前是哪个工作簿是活动的,thisworkbook就是指它所在的工作簿。

     

     

       B、工作簿窗口

       B、工作簿窗口

           Windows("A.xls"),A工作簿的窗口,使用windows可以设置工作簿窗口的状态,如是否隐藏等。

           Windows("A.xls"),A工作簿的窗口,使用windows可以设置工作簿窗口的状态,如是否隐藏等。

           Sub t3()

           Sub t3()

              Windows("A.xls").Visible = False

              Windows("A.xls").Visible = False

           End Sub

           End Sub

                                                                                              

                                                                                              

           Sub t4()

           Sub t4()

            Windows(2).Visible = True

            Windows(2).Visible = True

           End Sub

           End Sub

                                                                                              

                                                                                              

    18、Excel文件的操作

    18、Excel文件的操作

       A、 判断A.Xls文件是否存在

       A、 判断A.Xls文件是否存在

         Sub W1()

         Sub W1()

         If Len(Dir("d:/A.xls")) = 0 Then

         If Len(Dir("d:/A.xls")) = 0 Then

           MsgBox "A文件不存在"

           MsgBox "A文件不存在"

         Else

         Else

           MsgBox "A文件存在"

           MsgBox "A文件存在"

         End If

         End If

        End Sub

        End Sub

      B、 判断A.Xls文件是否打开

      B、 判断A.Xls文件是否打开

        Sub W2()

        Sub W2()

         Dim X As Integer

         Dim X As Integer

          For X = 1 To Windows.Count

          For X = 1 To Windows.Count

            If Windows(X).Caption = "A.XLS" Then

            If Windows(X).Caption = "A.XLS" Then

              MsgBox "A文件打开了"

              MsgBox "A文件打开了"

              Exit Sub

              Exit Sub

            End If

            End If

          Next

          Next

        End Sub

        End Sub

    C、excel文件新建和保存

    C、excel文件新建和保存

       Sub W3()

       Sub W3()

         Dim wb As Workbook

         Dim wb As Workbook

         Set wb = Workbooks.Add

         Set wb = Workbooks.Add

           wb.Sheets("sheet1").Range("a1") = "abcd"

           wb.Sheets("sheet1").Range("a1") = "abcd"

         wb.SaveAs "D:/B.xls"

         wb.SaveAs "D:/B.xls"

      End Sub

      End Sub

    D、 excel文件打开和关闭  

    D、 excel文件打开和关闭  

      Sub w4()

      Sub w4()

        Dim wb As Workbook

        Dim wb As Workbook

        Set wb = Workbooks.Open("D:/B.xls")

        Set wb = Workbooks.Open("D:/B.xls")

        MsgBox wb.Sheets("sheet1").Range("a1").Value

        MsgBox wb.Sheets("sheet1").Range("a1").Value

        wb.Close False

        wb.Close False

      End Sub

      End Sub

    E、 excel文件保存和备份

    E、 excel文件保存和备份

       Sub w5()

       Sub w5()

          Dim wb As Workbook

          Dim wb As Workbook

          Set wb = ThisWorkbook

          Set wb = ThisWorkbook

          wb.Save

          wb.Save

          wb.SaveCopyAs "D:/ABC.xls"

          wb.SaveCopyAs "D:/ABC.xls"

        End Sub

        End Sub

     F、 excel文件复制和删除

     F、 excel文件复制和删除

        Sub W6()

        Sub W6()

          FileCopy "D:/ABC.XLS", "E:/ABCd.XLS"

          FileCopy "D:/ABC.XLS", "E:/ABCd.XLS"

          Kill "D:/ABC.XLS"

          Kill "D:/ABC.XLS"

    End Sub

    End Sub

    19、工作表的概念

    19、工作表的概念

       A、excel工作表的分类

       A、excel工作表的分类

          excel工作表有两大类,一类是我们平常用的工作表(worksheet),另一类是图表、宏表等。这两类的统称是sheets

          excel工作表有两大类,一类是我们平常用的工作表(worksheet),另一类是图表、宏表等。这两类的统称是sheets

          sheets  工作表集合,泛指excel各种工作表

          sheets  工作表集合,泛指excel各种工作表

          Sheets("A"),名称为A的excel工作表

          Sheets("A"),名称为A的excel工作表

                                                                                  

                                                                                  

          Sub t1()

          Sub t1()

            Sheets("A").Range("a1") = 100

            Sheets("A").Range("a1") = 100

          End Sub

          End Sub

                                                                                  

                                                                                  

         ' workbooks(2),按打开顺序,第二个打开的工作簿。

         ' workbooks(2),按打开顺序,第二个打开的工作簿。

            Sub t2()

            Sub t2()

              Sheets(2).Range("a1") = 200

              Sheets(2).Range("a1") = 200

           End Sub

           End Sub

         'ActiveSheet ,当打开多个excel工作簿时,你正在操作的那个就是ActiveSheet

         'ActiveSheet ,当打开多个excel工作簿时,你正在操作的那个就是ActiveSheet

                                                                                    

                                                                                    

      20、工作表的操作

      20、工作表的操作

         A、判断A工作表文件是否存在

         A、判断A工作表文件是否存在

           Sub s1()

           Sub s1()

            Dim X As Integer

            Dim X As Integer

             For X = 1 To Sheets.Count

             For X = 1 To Sheets.Count

               If Sheets(X).Name = "A" Then

               If Sheets(X).Name = "A" Then

                 MsgBox "A工作表存在"

                 MsgBox "A工作表存在"

                 Exit Sub

                 Exit Sub

               End If

               End If

             Next

             Next

             MsgBox "A工作表不存在"

             MsgBox "A工作表不存在"

           End Sub  

           End Sub  

         B、 excel工作表的插入

         B、 excel工作表的插入

            Sub s2()

            Sub s2()

              Dim sh As Worksheet

              Dim sh As Worksheet

              Set sh = Sheets.Add

              Set sh = Sheets.Add

               sh.Name = "模板"

               sh.Name = "模板"

              sh.Range("a1") = 100

              sh.Range("a1") = 100

            End Sub

            End Sub

         C、 excel工作表隐藏和取消隐藏

         C、 excel工作表隐藏和取消隐藏

            Sub s3()

            Sub s3()

             Sheets(2).Visible = True

             Sheets(2).Visible = True

            End Sub

            End Sub

         D、 excel工作表的移动

         D、 excel工作表的移动

            Sub s4()

            Sub s4()

             Sheets("Sheet2").Move before:=Sheets("sheet1") 'sheet2移动到sheet1前面

             Sheets("Sheet2").Move before:=Sheets("sheet1") 'sheet2移动到sheet1前面

             Sheets("Sheet1").Move after:=Sheets(Sheets.Count) 'sheet1移动到所有工作表的最后面

             Sheets("Sheet1").Move after:=Sheets(Sheets.Count) 'sheet1移动到所有工作表的最后面

            End Sub

            End Sub

        E、 excel工作表的复制

        E、 excel工作表的复制

           Sub s5() '在本工作簿中

           Sub s5() '在本工作簿中

              Dim sh As Worksheet

              Dim sh As Worksheet

               Sheets("模板").Copy before:=Sheets(1)

               Sheets("模板").Copy before:=Sheets(1)

               Set sh = ActiveSheet

               Set sh = ActiveSheet

                  sh.Name = "1日"

                  sh.Name = "1日"

                 sh.Range("a1") = "测试"

                 sh.Range("a1") = "测试"

            End Sub

            End Sub

        F、工作表的保存

        F、工作表的保存

           Sub s6() '另存为新工作簿

           Sub s6() '另存为新工作簿

               Dim wb As Workbook

               Dim wb As Workbook

                Sheets("模板").Copy

                Sheets("模板").Copy

                Set wb = ActiveWorkbook

                Set wb = ActiveWorkbook

                   wb.SaveAs ThisWorkbook.Path & "/1日.xls"

                   wb.SaveAs ThisWorkbook.Path & "/1日.xls"

                   wb.Sheets(1).Range("b1") = "测试"

                   wb.Sheets(1).Range("b1") = "测试"

                   wb.Close True

                   wb.Close True

           End Sub

           End Sub

       G、 保护工作表

       G、 保护工作表

            Sub s7()

            Sub s7()

               Sheets("sheet2").Protect "123"

               Sheets("sheet2").Protect "123"

            End Sub

            End Sub

            Sub s8() '判断工作表是否添加了保护密码

            Sub s8() '判断工作表是否添加了保护密码

               If Sheets("sheet2").ProtectContents = True Then

               If Sheets("sheet2").ProtectContents = True Then

                 MsgBox "工作簿保护了"

                 MsgBox "工作簿保护了"

               Else

               Else

                 MsgBox "工作簿没有添加保护"

                 MsgBox "工作簿没有添加保护"

               End If

               End If

            End Sub

            End Sub

       H、工作表删除

       H、工作表删除

           Sub s9()

           Sub s9()

               Application.DisplayAlerts = False

               Application.DisplayAlerts = False

                  Sheets("模板").Delete

                  Sheets("模板").Delete

               Application.DisplayAlerts = True

               Application.DisplayAlerts = True

           End Sub

           End Sub

      I、工作表的选取

      I、工作表的选取

           Sub s10()

           Sub s10()

                Sheets("sheet2").Select

                Sheets("sheet2").Select

            End Sub

            End Sub

     

     

    本文由新葡亰496net发布于新葡亰496net,转载请注明出处:您会些什么,基于Python达成excel表格读写

    关键词: