教你快速入门Excel-宏与VBA(续)

引言

通过上次的讲解(教你快速入门(上))(教你快速入门(下)),相信一些简单的问题大家已经可以使用宏和VBA来解决了,那如果遇到大数据时怎么办?在日常生活中我们需要处理的可不止简单的一两张表,很可能是20,30张表甚至更多!如果你遇到这样的问题不要着急,这里我就来给大家讲解一下Excel中的大数据处理问题。

实例

接着上次简单示例来说,如果现在需要处理的表单不再是一个,而是多个,例如,需要统计多个年龄段的篮球运动员其身体素质成绩,那么原先的代码就不能实现了,因为之前的sheet名已经写“死”,只能是特定附表的数据,当然解决这个问题也很简单,只要简单的修改一下代码,使其自动获得当前表(所需表)的sheet名,然后把sheet名作为参数传递即可。OK,修改代码如下:

模块代码:

Option Explicit

'激活时,<span style="font-family: KaiTi_GB2312; ">求和,</span><span style="font-family: KaiTi_GB2312; ">自动获取全部成绩</span>
Public Sub WorksheetActivate()

    Dim selectedCol As Integer
    Dim r As Integer
    Dim c As Integer
    Dim j As Integer
    Dim isUpdate As Boolean
    Dim FileName As String

    FileName = GetName() + "附"

    '行循环
    For r = 5 To ActiveSheet.UsedRange.Rows.Count

       '列循环
       For c = 4 To ActiveSheet.UsedRange.Columns.Count - 1 Step 2
            isUpdate = False
            selectedCol = (c - 4) \ 2 + 2 '获取 当前表附表 中对应列号
            For j = 2 To Worksheets(FileName).UsedRange.Rows.Count
                If ActiveSheet.Cells(r, c).Value <> "" And ActiveSheet.Cells(r, c).Value = Worksheets(FileName).UsedRange.Cells(j, selectedCol).Value Then
                    ActiveSheet.Cells(r, c + 1).Value = Worksheets(FileName).UsedRange.Cells(j, 1).Value
                    isUpdate = True
                End If
            Next

            '如果没有更新,值为""
            If Not isUpdate Then
                ActiveSheet.Cells(r, c + 1).Value = ""
            End If
            Cells(r, c + 1).Select
       Next
    Next
End Sub

'点击时,获取成绩
Public Sub CellsClick(ByVal Target As Range)

    Dim FileName As String
    FileName = GetName() + "附"

    '只能选择(5,4)到有效表格的区域,否则跳过
    If Target.Column < 4 Or Target.Row < 5 Or Target.Column > ActiveSheet.UsedRange.Columns.Count - 1 Or Target.Row > ActiveSheet.UsedRange.Rows.Count Then
        Exit Sub
    End If

    Dim selectedCol As Integer
    Dim j As Integer
    Dim isUpdate As Boolean

    selectedCol = (Target.Column - 4) \ 2 + 2  '获取 <span style="font-family: KaiTi_GB2312; ">当前表附表</span><span style="font-family: KaiTi_GB2312; "> 中对应列号</span>

    If Target.Column Mod 2 = 0 Then
        '行循环
        For j = 2 To Worksheets(FileName).UsedRange.Rows.Count Step 1
            If ActiveSheet.Cells(Target.Row, Target.Column).Value <> "" And ActiveSheet.Cells(Target.Row, Target.Column).Value = Worksheets(FileName).UsedRange.Cells(j, selectedCol).Value Then
                ActiveSheet.Cells(Target.Row, Target.Column + 1).Value = Worksheets(FileName).UsedRange.Cells(j, 1).Value
                isUpdate = True
            End If
        Next

        If Not isUpdate Then
           ActiveSheet.Cells(Target.Row, Target.Column + 1).Value = ""
        End If
    End If

     '列循环,自动求和
    Dim sum As Double
     sum = 0
    For j = 5 To ActiveSheet.UsedRange.Columns.Count - 1 Step 2
        sum = sum + Val(ActiveSheet.Cells(Target.Row, j).Value)
    Next
    ActiveSheet.Cells(Target.Row, ActiveSheet.UsedRange.Columns.Count).Value = sum
End Sub

<span style="color:#ff0000;">
</span>'获取当前操作的文件名称
Private Function GetName() As String
    GetName = ActiveSheet.Name
End Function

主表代码:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row = Selection.Row - 1 And Target.Column = Selection.Column Or Target.Row = Selection.Row And Target.Column = Selection.Column - 1 Then
    '修改立即获取成绩
    CellsClick Target
End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '点击时获取成绩
    CellsClick Target
End Sub

总结

多表操作思想:

1.多表操作时要注意分类,一般各表之间不是孤立存在的,把同类型(比如按性别分类,按年龄段分类,按年级 分类)放到一个Excel里去处理;

2.一个Excel中多表之间操作要注意参数传递,数据获取方式和激活问题,多做测试。

优化思想:

一项工作重复多遍时,肯定可以优化,优化方式很简单,提取公共部分!

教你快速入门Excel-宏与VBA(续),布布扣,bubuko.com

时间: 2024-10-29 19:07:09

教你快速入门Excel-宏与VBA(续)的相关文章

利用python 数据分析入门,详细教程,教小白快速入门

这是一篇的数据的分析的典型案列,本人也是经历一次从无到有的过程,倍感珍惜,所以将其详细的记录下来,用来帮助后来者快速入门! 数据的格式如下: 我们设定 一个trem or  typedef为一条标签,一行为一条记录或者是键值对,以此为标准! 下面我们来对数据进行分析: 数据集中一共包含两种标签[trem] and [typedef]两种标签,每个标签下边有多个键值对,和唯一的标识符id,每行记录以"/n"结尾,且每条标签下下有多个相同的键值对,for examble: is_a,syn

eh教你快速掌握excel格式化显示

<eh出品,必属精品.支持原创,欢迎转载.> 本文针对从数据库导入大量数据到excel表的情况,博友们可根据需要自行修改 首先针对几万行大数据,有一个技巧,比如从第2行到第20001行,显示00000001到00020001(第一行显示字段名),可以在第2行输入 =text(row()-1,"00000000"), 然后在20000行随便输入一个数字什么的, 接着我们定位第2行,同时按下alt+shift+↓ ,再按下ctrl+d 这样就完成了第一步 接下来就是我们要讲的重

?HealthKit开发快速入门教程之HealthKit数据的操作

HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知道一天走的步数.本章将主要讲解HealthKit数据构成的方式,以及如何规范的表达一个数据. 2.1  数据的操作 在HealthKit中,数据都是与单位和值组成的,如图2.1所示.此图为一个睡眠分析的截图.在此图中59m就代表了一个数据.其中m为单位,59为基于单位的数值.本节将讲解数据的创建.判断

HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID

HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在iOS上的Health即健康应用有哪些功能等.本节将针对这些问题进行讲解. HealthKit框架体系 对于一类应用程序来说,要进行开发,首先需要熟悉它的框架体系,即类.以下我们针对HealthKit中所使用的类进行了总结,如表1-1所示. 1-1  HealthKit框架体系 类 功能 NSObje

HealthKit开发快速入门教程之HealthKit开发概述HealthKit简介

?HealthKit开发快速入门教程之HealthKit开发概述简介? 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为"Healthkit".本章将主要讲解HealthKit的特点.经典应用以及在开发HealthKit时的准备工作. HealthKit简介 HealthKit就是可以收集和分析用户的健康数据移动应用平台.本节将主要讲解HealthKit的特点.经典应用. HealthKit特点 本小节将主要

HealthKit开发快速入门教程之HealthKit开发概述简介

HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“Healthkit”.本章将主要讲解HealthKit的特点.经典应用以及在开发HealthKit时的准备工作. HealthKit简介 HealthKit就是可以收集和分析用户的健康数据移动应用平台.本节将主要讲解HealthKit的特点.经典应用. HealthKit特点 本小节将主要讲解Healt

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基础如何快速入门大数据技巧吧. 很多人都需要学习大数据是需要有一定的基础的,编程语言就是必备的条件之一,编程语言目前热门的有:Java.Python.PHP.C/C++等等,无论是学习哪一门编程语言,总之要精细掌握一门语言是非常必须的,我们先拿应用广泛的Java说起哦. .在入门学习大数据的过程当中有遇见学习,行业,缺乏系

教你看懂Excel密码破解工具结果对话框

Excel文档的密码可谓是Office所有产品中最复杂的,密码类型最多,还涉及密保程度较高的VBA密码.自然而然Excel密码破解工具的结果对话框也是稍微复杂,用户可能会看不懂其中的内容,下面将教你如何快速秒懂Excel密码破解工具的结果对话框. 解读Excel密码破解工具结果对话框 在Excel密码破解工具破解过程结束之后,不管是否破解成功,系统都会弹出密码对话框,对话框上的信息都是对此次密码破解结果的展示,破解成功的结果对话框如下图所示: Excel密码破解工具结果对话框的第一部分是密码区,