excel使用教程_数据分析Excel必备技能:数据透视表使用教程

江米小枣tonylua | 作者

掘金 | 来源

处理数量较大的数据时,一般分为数据获取、数据筛选,以及结果展示几个步骤。在 Excel 中,我们可以利用数据透视表(Pivot Table)方便快捷的实现这些工作。

本文首先手把手的教你如何在 Excel 中手动构建一个基本的数据透视表,最后用 VBA 展示如何自动化这一过程。

注:

本文基于 Excel 2016 for Mac 完成,个别界面和 Windows 版略有差异

如果要完成 VBA 的部分,Excel for Mac 需要升级到 15.38 版本以上

Excel 2007 及之后的顶部 Ribbon 菜单,文中简称为 Ribbon

开启“开发工具”菜单的方法也请自行了解

1、源数据

Excel 提供了丰富的数据来源,我们可以从 HTML、文本、数据库等处获取数据。

这个步骤本文不展开讨论,以下是我们作为分析来源的工作表数据:

2eb672575f77986371f7cbe36bb28f6b.png

2、创建数据透视表

  • 此处将工作表重命名为sheet1
  • 首先确保表格第一行是表头
  • 点击表中任意位置
  • 选中 Ribbon 中的“插入”
  • 点击第一个图标“数据透视表”,出现“创建数据透视表”对话框
f49d204e28eae85fcf759f2506ced524.png

注意观察对话框中的各种选项,这里我们都采用默认值

点击“确定”后,一个空的数据透视表出现在了新工作表中:

c4c9a4025965575e540c569def3aea73.png

3、数据透视表中的字段

  • “数据透视表生成器”菜单中,选择“球队、平、进球、失球、积分、更新日期”几个字段
ff5c10b647354f8f4de2acf47f5c4d88.png
  • 将“平”拖放至“行”列表中的“球队”上方;表示在“平局”的维度上,嵌套(nesting)的归纳了“球队”的维度
  • “更新日期”拖放至“筛选器”列表中;表示可以根据更新日期来筛选显示表格数据
5e1e0a92f8fc5c6de7b818744728f35c.png
  • 分别对当前“值”列表中的几个字段,点击其右侧的i图标
  • 因为本例中无需计算其默认的“求和”,故将这几个字段的“汇总方式”都改为“平均值”
365f67b91c56a1cc3b3bdb4fe0982f25.png
  • 暂时关闭“数据透视表生成器”
  • 该窗口随后可以用“字段列表”按钮重新打开
668d31dc216c89418c69cc8537473663.png

此时一个基本的数据透视表已经成型

f84d16125ff10ca4a055f83bb5ba8a3a.png

4、增加自定义字段

有时基本的字段并不能满足分析的需要,此时就可以在数据透视表中插入基于公式计算的自定义字段。

下面用不同的方法加入两个自定义字段:

1.简单运算的公式

首先简单计算一下各队的场均进球数:

  • 点击数据透视表中的任意位置,以激活“数据透视表分析” Ribbon 标签
  • 点击“字段、项目和集”按钮,在弹出的下拉菜单中选择“计算字段”
  • “插入计算字段”对话框会出现
  • 在“名称”中填入“场均进球”
  • “字段”列表中分别双击“进球”和“场次”
  • 以上两个字段会出现在“公式”框中,在它们中间键入表示除法的斜杠/
  • 也就是说,此时“公式”部分为 =进球/场次
e8705bb980ed941c124a632e32c84eba.png
  • 点击“确定”关闭对话框,数据透视表中出现了新的“求和/场均进球”字段
  • 按照之前的方法,将字段的汇总方式改为“平均值”,确定关闭对话框
acd0034d3ed9569fa9c389047c4f259c.png

2.调用 Excel 公式

再简单的评估一下球队的防守质量,这里我们假设以如下 Excel 公式判断:

= IF(净胜球>=0,2,1)

防守还不错的取 2,不佳的则标记为 1。

  • 按照刚才的方法新建一个计算字段
  • 将上述公式填入“公式”
6005488b7f6029be6a04836dc3ccfaf0.png
  • 将字段的汇总方式改为“计数” -- 虽然在此处并无太多实际意义

5、利用切片器过滤数据

除了可以在“数据透视表生成器”中指定若干个“过滤器”,切片器(Slicers)也可以用来过滤数据,使分析工作更清晰化

切片器的创建非常简单:

  • 在 Ribbon 中点击“插入切片器”按钮
  • 字段列表中选择“胜”、“负”
  • 两个切片器就出现在了界面中
bab6145af0709b886b5063d3aa28cd94.png
  • 点击切片器中的项目就可以筛选
  • 结合 ctrl 键可以多选
12e0bd00626cf443b0cd5015a3f0a119.png

6、成果

至此,我们得到了一个基于源数据的、可以自由组合统计维度、可以用多种方式筛选展示数据透视表

可以在 Ribbon 的“设计”菜单中选择预设的样式等,本文不展开论述。

aa71360632e7233e857f7b6f0ce551ae.png

以上就是创建数据透视表的基本过程。

7、自动化创建

基本的数据透视表的创建和调整并不复杂,但如果有很多类似的重复性工作的话,使用一些简单的 VBA自动化这一过程,将极大提升工作的效率。

本例中使用 VBA 脚本完成与上述例子一样的任务,对于 VBA 语言仅做简单注释,想更多了解可以自行查阅官方的文档等

1.一键生成

此处我们放置一个按钮源数据所在的数据表,用于每次点击自动生成一个数据透视表。

  • 在 Ribbon 的“开发工具”中点击按钮
  • 在界面任意位置框选一个按钮的尺寸
  • 释放鼠标后弹出“指定宏”对话框
  • 此处我们将“宏名称”框填入 ThisWorkbook.onCreatePovit
  • “宏的位置”选择“此工作簿”
  • 点击"编辑"后关闭对话框
9d8dff7b17b1054352a8983f7852b377.png
  • 将按钮名称改为“一键生成透视表”
b5c4e37c7299ea5a8748e461563d563b.png

2.脚本编写

  • 点击 Ribbon 中“开发工具”下面第一个按钮“Visual Basic”
  • 在出现的“Visual Basic”编辑器中,选择左侧的“ThisWorkbook”类目
  • 在右侧编辑区贴入下面的代码
76e9344779a8a967cdf14e04fc1bc4aa.png
Sub onCreatePovit()    Application.DisplayAlerts = False    ' 声明变量    Dim sheet1 As Worksheet    Dim pvtTable As PivotTable    Dim pvtField As PivotField    Dim pvtSlicerCaches As SlicerCaches    Dim pvtSlicers As slicers    Dim pvtSlicer As Slicer    ' 删除可能已存在的透视表    Dim existFlag As Boolean    Dim ws As Worksheet    For Each ws In Worksheets        If ws.Name = "pivot1" Then existFlag = True: Exit For    Next    If existFlag = True Then        Sheets("pivot1").Select        ActiveWindow.SelectedSheets.Delete    End If    ' 初始化    Set sheet1 = ActiveWorkbook.Sheets("sheet1")    Set pvtSlicerCaches = ActiveWorkbook.SlicerCaches    ' 指定数据源    sheet1.Select    Range("A1").Select    ' 创建透视表    Set pvtTable = sheet1.PivotTableWizard    ActiveSheet.Name = "pivot1"        ' 指定行和列    pvtTable.AddFields _        RowFields:=Array("平", "球队"), _        ColumnFields:="Data"    ' 指定数据字段    Set pvtField = pvtTable.PivotFields("失球")    pvtField.Orientation = xlDataField    pvtField.Function = xlAverage    pvtField.Name = "平均值/失球"    Set pvtField = pvtTable.PivotFields("进球")    pvtField.Orientation = xlDataField    pvtField.Function = xlAverage    pvtField.Name = "平均值/进球"    Set pvtField = pvtTable.PivotFields("积分")    pvtField.Orientation = xlDataField    pvtField.Function = xlAverage    pvtField.Name = "平均值/积分"    ' 指定计算字段    pvtTable.CalculatedFields.Add Name:="场均进球", Formula:="=进球/场次"    Set pvtField = pvtTable.PivotFields("场均进球")    pvtField.Orientation = xlDataField    pvtField.Function = xlAverage    pvtField.Name = "平均值/场均进球"    pvtTable.CalculatedFields.Add Name:="防守质量", Formula:="= IF(净胜球>=0,2,1)"    Set pvtField = pvtTable.PivotFields("防守质量")    pvtField.Orientation = xlDataField    pvtField.Function = xlCount    pvtField.Name = "计数/防守质量"    ' 指定切片器    Set pvtSlicers = pvtSlicerCaches.Add(pvtTable, "胜", "胜_" & ActiveSheet.Name).slicers    Set pvtSlicer = pvtSlicers.Add(ActiveSheet, , , , 300, 400)    Set pvtSlicers = pvtSlicerCaches.Add(pvtTable, "负", "负_" & ActiveSheet.Name).slicers    Set pvtSlicer = pvtSlicers.Add(ActiveSheet, , , , 350, 450)            ' 指定过滤器    Set pvtField = pvtTable.PivotFields("更新日期")    pvtField.Orientation = xlPageField    Application.DisplayAlerts = TrueEnd Sub

3.运行程序

回到界面中,每次点击按钮就会在新工作表中生成结构和之前例子一致的数据透视表

0b9bfa408603769bb0cd9421d95dc77b.png

8、总结

  • 本文简单的展示了在 Excel 中创建透视表的过程,以及其筛选、展示数据的方式
  • 通过 VBA 可以完成和手动创建一样甚至更多的功能,并大大提高工作效率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...

原标题:笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构、集群架构、分布式架构、SOA架构和微服务架构。下面玄武老师来给大家详细…

专2-第二课 Eclipse开发环境搭建

2.1下载Eclipse 2.2 安装C/C版本的Eclipse 2.3 安装JDT插件开发Java程序 2.4 使用Eclipse开发驱动程序 既然安装了eclipse来进行驱动学习,那么我们就先来试试看eclipse开发驱动的大致流程。这里以Linux设备驱动作为示列给读者展示整个流程,Android底层的…

tkinter 菜单添加事件_Tasker的最新测试劫持了Android 11的电源菜单

流行的Android自动化应用Tasker 最近收到了重大更新,为该应用引入了许多新功能。该更新包括解锁应用程序读取手机上任何传感器以触发任务的功能,使您可以通过任何第三方应用程序自动发送短信或拨打电话的功能,完全请勿打扰自定义功能。通过链…

CLR via C#(18)——Enum

1. Enum定义 枚举类型是经常用的一种“名称/值”的形式,例如: public enum FeedbackStatus { New, Processing, Verify, Closed } 定义枚举类型之后我们在使用时方便了许多,不用再记着0代表什么状态…

电力电子、电机控制系统的建模和仿真_清华团队研发,首款国产电力电子仿真软件来啦~已捐赠哈工大、海工大、清华使用!...

点击上方电气小青年,关注并星标由于微信改版,只有星标才能及时看到我们的消息哦━━━━━━推荐阅读:《膜拜大神!清华大学电机系2021年接收推荐免试直硕(博)生拟录取名单公示!》《滴滴程序员年薪80万被鄙视不如在二本…

可视化分析之图表选择

转载于:https://www.cnblogs.com/yymn/p/4783631.html

453. 最小操作次数使数组元素相等

给你一个长度为 n 的整数数组&#xff0c;每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。 class Solution {public int minMoves(int[] nums) {int res 0;int sum 0;int n nums.length;for(int i 0;i<n;i){sum nums[i];}res sum - min…

第二章 TCP/IP 基础知识

第二章 TCP/IP 基础知识 TCP/IP transmission control protocol and ip internet protocol 是互联网众多通信协议中最为著名的。 2.2 TCP/IP 的标准化 2.2.2 TCP/IP 标准化精髓 TCP/IP 协议始终具有很强的实用性。 相比于TCP/IP &#xff0c;OSI 之所以未能达到普及&#xff0…

gorm preload 搜索_LeetCode刷题笔记|95:不同的二叉搜索树 II

题目描述给定一个整数 n&#xff0c;生成所有由 1 ... n 为节点所组成的 二叉搜索树 。示例输入&#xff1a;3输出&#xff1a;[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释&#xff1a;以上的输出对应以下 5 种不同结构的二叉搜索树&#xf…

GTJ2018如何导出全部工程量_如何成为优秀的造价员?广联达编制内刊手册,造价员算量高手秘籍...

如何成为优秀的造价员&#xff1f;广联达编制内刊手册&#xff0c;造价员算量高手秘籍[高手秘籍]是广联达课程编制委员会暨直播委员会精心打造的&#xff0c;能够“让您深入理解软件计算、设置等原理,遇到问题有处理思路,以常见问题为导向&#xff0c;重点进行原因分析&#xf…

带有Spring,Hibernate,Akka,Twitter Bootstrap,Apache Tiles和jQuery的Maven Web项目Kickstarter代码库...

我很高兴将第二个项目上传到GitHub&#xff0c;以帮助人们尽快开始Java Web App开发。 我正在与Apache License 2.0共享此代码。 这是相同的网址&#xff1a; https://github.com/ykameshrao/spring-hibernate-springdata-springmvc-maven-project-framework 该项目包括以下部…

C++服务器设计(七):聊天系统服务端实现

在之前的章节中&#xff0c;我们对服务端系统的设计实现原理进行了剖析&#xff0c;在这一章中&#xff0c;我们将对服务端框架进行实际运用&#xff0c;实现一款运行于内网环境的聊天系统。该聊天系统由客户端与服务器两部分组成&#xff0c;同时服务端通过数据库维护用户的账…

高校实验室管理系统_史上最全面的实验室信息管理系统(LIMS)全解

1. LIMS的基本概念和发展状况1.1 概括LIMS实验室管理系统是为实验、检测等业务板块提供流程化、模块化、标准化操作管理系统&#xff0c;打造基于行业法规的实验室全流程质量控制管理系统&#xff0c;实现实验室“人、机、料、法、环”关键环节管理。1.2 发展状况随着科研规范化…

配置了坐标还是找不到serv_为什么老人家总是这疼那疼,还找不到原因?是矫情还是另有原因...

“哎呀&#xff0c;怎么回事&#xff0c;腰痛腿痛的&#xff0c;痛的我一晚上都没怎么睡觉&#xff0c;怎么回事昨天也没干嘛啊&#xff01;”对于这一句话&#xff0c;相信很多朋友都不是很陌生。这句话是来自于一位网友的留言&#xff0c;而说这话的真是她的妈妈。这也是很多…

qopenglwidget 透明_廊坊透明真空袋用途-祺泰包装

功能方面&#xff1a;平面真空袋抽真空后易形成不平整&#xff0c;不均匀的现象。目前&#xff0c;真空包装主要用于食品的包装&#xff0c;如肉类、谷类加工食品以及易氧化变质的食品&#xff0c;也可用于机械零件、仪器和羽绒制品、毛制品等蓬松制品的包装。在超shi中&#x…

使用Spring Data Neo4j进行领域建模

大家好&#xff0c;威利在这里。 上次我告诉您&#xff0c;我正在使用Neo4j和Spring Data Neo4j构建Skybase CMDB&#xff0c;我很高兴收到很多对此的积极反馈。 我展示了一些代码&#xff0c;但没有那么多。 在本文中&#xff0c;我将向您展示如何使用Spring Data Neo4j在Skyb…

linux多线程_Java+Linux,深入内核源码讲解多线程之进程

之前写了两篇文章&#xff0c;都是针对Linux这个系统的&#xff0c;为什么?我为什么这么喜欢写这个系统的知识&#xff0c;可能就是为了今天的内容多线程系列&#xff0c;现在多线程不是一个面试重点 啊&#xff0c;那如果你能深入系统内核回答这个知识点&#xff0c;面试官会…

ipad连接电脑_这些应用让iPad生产力分分钟UP

IT时报见习记者 钱奕昀用iPad办公这件事&#xff0c;多年前网友就在讨论&#xff0c;最常见的还是那句“买前生产力&#xff0c;买后爱奇艺”。很长一段时间里&#xff0c;它的生产力属性都是弱于娱乐属性的。其实&#xff0c;作为PC端和移动端的形态中和&#xff0c;iPad可以…

Mac OSX 快捷键命令行

ctrlshift 快速放大dock的图标会暂时放大&#xff0c;而如果你开启了dock放大CommandOptionW 将所有窗口关闭CommandW 将当前窗口关闭(可以关闭Safari标签栏,很实用) CommandOptionM …

将JavaFX 2.0与Swing和SWT集成

JavaFX 2.0对JavaFX的改进之一是可以更轻松地与Swing和SWT进行互操作 。 一些在线资源记录了如何完成此操作。 其中包括将JavaFX集成到Swing应用程序和SWT Interop中 。 但是&#xff0c;在有效的类级Javadoc文档的一个很好的示例中&#xff0c;各自的JavaFX类javafx.embed.swi…