中企动力 > 商学院 > excel连接数据库
  • ?

    仅需4步,轻松在Excel处理300万行数据

    Oralie

    展开

    这场软件PK,是时候分出胜负了,今天就是大结局。有必杀技在手,Excel已经看到了胜利的曙光。

    在99%的人眼中,Excel能处理的最大数据是100万行,假如现在是300万行,估计都束手无策,只能寄希望于数据库。不学习真的限制了你的想象力,300万行数据Excel也能轻松统计。

    300万行一个表肯定是存放不下,可以存放在多个工作表、多个工作簿甚至是数据库,不管何种储存形式,Excel都可以处理。今天,卢子就以存放在多个工作表为例进行说明。

    在Excel存放着3个工作表,每个工作表100万行数据,合计300万,现在要统计每个姓名的总金额。

    Step 01点数据→新建查询→从文件→从工作簿,浏览到指定的工作簿,导入,在导航器再选择工作簿的名称(相当于选中所有工作表),点编辑。

    Step 02 选择Data这一列,右键选择删除其他列,再点扩展按钮,确定。展开后就看到所有数据,将第一行用作标题。

    Step 03 点关闭并上载至,选择仅创建连接,勾选将此数据添加到数据模型。划重点,这一步是最重要的,不能有半点差错。数据模型就相当于一个大型的数据库,甚至可以容纳几千万行数据,正因为如此,才能让Excel突破百万行数据。

    Step 04 直接创建透视表,默认情况下透视表的数据源就是数据模型中的数据,再勾选姓名和金额就完成统计。

    神奇吗?有没一种想亲自体验一把的想法?

  • ?

    一张模板替代数百Excel,这个工具让报表工作自动进行

    王小翠

    展开

    Excel的重度用户对这个话题肯定非常感兴趣。

    因为每天重复以下事情,一天两天还好,时间长了谁都受不了。

    收集数据、复制、粘贴、清洗数据、转换数据,然后用固定的处理逻辑,输出同样的结果

    我把这些工作称为常规工作,属于必须做,做好不出彩,做不好有责任。

    作为数据民工,每天要处理非常多的数据,深有体会。相比之下,我更愿意每天处理新的需求,分析异常业务情况的数据分析工作,显然这样的价值更高。

    可如果大部分的时间已被常规工作占据,哪还有时间来做更有价值的事情?

    把这些工作推给别同事? —— 凭什么!拼手速、学快捷键节省时间? —— 一切不能释放你双手的办法都不是好办法。

    自动化是唯一的出路!把原先需要几十分钟,几个小时甚至几天的工作内容自动化。腾出了时间,才有机会搞更有价值的东西。

    一说到自动化,很多人就想到Excel宏、VBA什么的,这可是编程呀,必须VBA吗?

    误会啊误会,如果是这样,我今天就不写这些文字了。

    从我自己在企业的数据工作经历来看,70%的自动化都不需要VBA,VBA我只用于处理一些极个别复杂的需求。大部分常规性的报表我们都交给更专业的报表工具去开发,尤其是固定式报表,这个自动化比例能达到90%,上手难度却只是VBA的一半。

    举个例子,有一份每天早上需要发布的销量报表,老板的要求是:

    1)从总体,区域,产品,城市,分公司视角

    2)展示当天、当月、当年的销售情况

    3)还要给出利润及利润率

    4)除此以外,还要展示出营业利润额的趋势。

    正常不出意外的情况下,这份报表每天要花2~3个小时汇总制作。用报表工具做自动化模板后,一键刷新,整个过程不超过5分钟,只需要翘脚等待刷新完成。

    这个报表工具就是FineReport。

    罗列几个能解决大家报表制作的痛点,也是它广泛为人所用的亮点:

    1、 制作报表高效低重复,自动化;

    2、 数据填报,数据自动更新汇总;

    3、 可视化dashboard真是酷炫;

    一、高效做报表,1张模板顶替数百张Excel

    为什么能如此高效,关键在于他做报表的逻辑。

    1、FineReport自动化模板的做表逻辑

    常规我们用Excel做报表,是把数据从数据库导出来,复制粘贴到一张或多张表上,然后对这个表数据做处理,每天有数据,就每天手动复制更新。

    而FineReport直接是通过连接数据库,读取数据字段来设计报表模板的,和数据库实时对接。制作模板处理的对象是数据字段(区别于Excel的单元格数据)。模板中一个单元格放一个数据字段,对数据字段进行求和、求平均等各种函数公式的运算。且当这个数据字段下的数据有新增时,设置自动刷新就能一键更新报表。

    其实和excel类似,excel对一个单元格做公式处理,然后下拉。这边是直接对数据字段处理,省去了下拉的过程,展示报表时,自动扩展开来,就相当于报报表结果中的每一个数据,都变成能自动计算的公式。只要你改变数据源,它将像多米诺骨牌一样,自动进行。

    以下是用FineReport做报表模板时的场景,做的时候可能是仅仅一行,但预览时却是扩展出来的密密麻麻的 “风景”,这里就要谈谈它的数据是怎么展开的,即扩展原理。

    FineReport报表中单元格的扩展是有方向的,可纵向扩展,也可横向扩展,也可以不扩展。

    单元格的扩展是针对某一个单元格,当报表主体中绑定了多个单元格时,单元格与单元格之间依靠父子格关系跟随扩展。子格的数据会根据父格的数据进行过滤分组显示,并且还会跟随父格的扩展方向而扩展。

    2、三大类报表设计方式,基本能解决日常所有报表需求,并且一表复用。

    1)普通模板设计,此者最常用。依靠着单元格的扩展与父子格的关系来实现模板效果,可进行参数查询,填报报表,图表设计等。比如交叉报表、行式报表、分组报表等等。(以上↑)

    2)聚合报表设计,针对不规则大报表。适用于一张模板中显示多个独立模块的报表,几个报表块汇总在一起的复杂报表。(以下↓)

    3)决策报表设计,就是表单,也是dashboard,用于弥补普通报表分页预览不能展示控件的问题。同时表单可以进行自由拖拽设计,自适应页面大小显示,自由制作驾驶舱可以更好的在各种大小类型的屏幕上展示,包括移动端、大屏。

    以下举例一些常见的报表格式。

    交叉表

    行式报表

    分组报表

    自由报表

    3、参数实现数据查询和过滤

    在很多情况下,我们需要根据条件查询数据,过滤。在FineReport中,通过设置参数绑定数据字段和过滤的控件(单选框复选框等等),参数可用JS编辑更多复杂的情况,通过界面输入查询条件来控制报表显示的内容及形式,而后导出打印。

    二、数据填报自动更新汇总

    做报表的另外一个难题是有关数据源的提交,审批,更新,汇总。试想你有没有经历过每天守着点等大家发邮件送Excel,挨个保存、打开、汇总数据的麻木操作。回头数据出错,还要打回重新沟通,数据采集总是最难的。

    填报就是向数据库中录入数据,用于固定格式固定条件的数据收集。就好比你注册头条时提交的邮箱、收集、用户名、密码,都会按照格式存放到数据库中。

    填报也需要一个模板,类似于一个可写入的操作模式,操作流程如下:

    填报模板由控件组成,文本控件、数字控件、密码控件、单复选框、网页、文件等等。控件对应着数据字段。有了填报,就可以收集数据,并且允许用户实现对数据库的增删改。出于数据质量和数据安全的考虑,还可以对填报进入的数据做校验操作。

    三、可视化dashboard及分析

    酷炫的dashboard都需要通过FineReport的表单(决策报表)来设计展现。通过拖拽报表块、图表块和各类控件初步设计界面。

    不同于普通报表,普通报表是一个整体,无法实现局部刷新。表单是由各个组件组成,可以实现组件内刷新,即局部刷新。像动态大屏都是全局或者局部刷新的,所以需要用决策报表制作实现。

    决策报表制作过程

    新建表单:FineReport支持新建工作薄,即普通报表模板,还支持新建表单,两种设计模式;

    拖入组件:FineReport表单支持多种不同的组件类型,包括报表块、tab块、绝对画布块、参数、图表和控件等等;

    定义数据集:定义各个组件数据来源,图表组件数据即可来源于数据集,也可来源于单元格;

    设置表单样式:即设置表单的显示样式。

    2、数据可视化与交互

    大家看到上述的可视化会好奇,这是什么图表制作的。其实大多由FineReport自带的H5图表。此前有提到FineReport良好的开放性,可让IT同事写代码开发,所以在制作时,也可接入Echarts等第三方控件来制作图表。

    最后

    以上便是FineReport一部分功能,篇幅有限,很多细节无法展开。

    要说效率,最大的好处就是从数据库中读出数据自动产生报表,且一类报表做成一个固定样式的模板,每次只要同步一下,自动生产周期性的报表,如日报、周报、月报、季报等。 每次按照条件查询,Excel批量导出/打印,少了人力去一个一个用Excel统计汇总。

    而且操作上,大多数功能FineReport都封装成模块了,包括写SQL取数,汇总筛选过滤等,基本上都有对应的功能键。像著名的资产负债表,如果按照以往写代码或者写复杂的SQL语句,就有点摧残生命了,而且那天书般的SQL语句要是出点错谁来查,如果数据来自多个源,那就彻底无法解脱了。

    最后,对于新手,刚开始尝试这么做时,会遇到非常多的阻力。原因有两个:

    做表的思维方式完全不一样,需要适应上手finereport自动化模板需要学习新的技能你需要不断的尝试和练习。但是,当你拥有这种思维方式,掌握相应的技能后,你将深深体会到它的威力,不过切记低调、低调。

    还等什么呢?赶紧解放自己,get这个技能吧!

  • ?

    Excel之另类处理数据

    桑迪

    展开

    首看一个栗子

    某人工客服一天的客户来电记录如下表,希望统计来电次数≥2的客户,并记录其第一通来电数据。

    (数据都是虚构的,编造的电话防止真的是别人的,加了个fake)

    (共8239条数据)

    这种问题,在SQL中只要两步即可完成。

    1)对原表a按“电话”汇总,记录出现次数和最早时间,生成临时表b;

    2)对表a、b作innerjoin,满足三个条件:a、b中电话相等;a、b中时间相等;b中次数大于1。

    当然,在Excel中不用SQL也完全能够实现上述目的,且方法不只一种,但是究其复杂程度、速度都有所欠缺。例如其中一种方法如下:

    1)将数据转化为Table,方便后面处理;

    2)添加辅助列,计算电话出现的次数(由于数据量较大,计算后选择性粘贴为数值);

    3)按次数(降)、时间(升)对数据排序;

    4)删除次数为1的所有行;

    5)按照列D“电话”删除重复值。

    得到最终结果,共有2446个客户来电次数≥2。

    上述步骤略显复杂,实际操作后,你会发现,速度较慢,影响效率。那么如何在Excel中使用SQL语句呢?

    答:我们在VBA环境下借助数据库连接对象来执行SQL语句。具体代码如下:

    我们只要将上述代码中的sql字符串替换成我们的SQL语句,即可执行相应SQL语句。SQL语句的数据表可用[Sheet1$A1:D8240]表示引用,如果Sheet1中只有一个数据表,也可写成[Sheet1$],本例中的SQL语句如下:

    这一整句SQL语句则实现了文章开头指出的两个步骤:

    执行SQL语句得到的结果如下。

    同样是2446条记录,对比结果也完全一致,但耗时只有0.85秒,效率极大提高。

    Excel数据结合SQL语句进行处理,能够高效的实现很多看似复杂数据处理问题。

  • ?

    excel办公小技巧:vba使用sql语句获取excel表格数据教程

    Lyle

    展开

    在excel办公中,用VBA加上SQL语句实现对excel表格的数据获取,对于处理一些大数据量的表格来说是非常实用的。SQL是结构化查询语言,是数据库开发中用的程序设计语言,数据库里的数据表跟EXCEL里的表格其实是很类似的,所以用VBA加SQL语句可以实现类似的表格查询操作。

    举个例子:在EXCEL里用VBA+SQL来查询总成绩大于290分的学生

    一、手工操作的步骤是:

    1、 EXCEL打开如下表格,点击插入-数据透视图,点击创建数据透视图

    2、 在出现的数据透视图界面,点击姓名为行标签,点击成绩为求和项字段

    3、 在左侧的出现的行标签和求和项表格数据进行排序,手工选出成绩大于290分的记录。

    用上面的数据透视图方法很方便,步骤也少,比分类汇总功能要简便些。

    二、VBA加上SQL语句实现EXCEL表格数据的查询

    1、 先用EXCEL打开表格,调出VBE工程界面(ALT+F11),建议在个人工作簿新建个模块,把代码输入到右侧的区域。注:用个人工作簿的好处是,每次启动EXCEL不用手动启用宏。

    2、 根据自己的表格字段和功能需求,修改好SQL代码后,保存按F5快捷键运行。注:SQL语句中表名要用[表名$]这种写法。

    以上是在EXCEL用VBA加SQL语句实现对表格的自动查询,调用的方法是按ALT+F8,选择相应的代码名称,这里的名称是SQL查询。用这种方法对于规则不经常变动的情况下使用很实用,特别是在数据量大的情况下。

    附上截图代码

    Sub SQL查询()

    Dim cnn As Object, rs As Object, SQL As String

    Set cnn = CreateObject("adodb.connection") '创建数据库连接

    cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ActiveWorkbook.FullName

    Set rs = CreateObject("adodb.recordset") '创建一个数据集

    SQL = "select 姓名,sum(成绩) from [原始数据$] group by 姓名 HAVING sum(成绩)>290" '设置SQL查询语句,这个根据实际需要改写,注意【表名$】这种写法

    Set rs = cnn.Execute(SQL) '执行查询

    ActiveWorkbook.Worksheets(2).Cells.ClearContents

    Dim i As Integer

    For i = 1 To rs.Fields.Count

    ActiveWorkbook.Worksheets(2).Cells(1, i) = rs.Fields(i - 1).Name '填写标题到表2

    Next

    ActiveWorkbook.Worksheets(2).Range("a2").CopyFromRecordset rs '复制记录集到表2

    rs.Close

    Set rs = Nothing

    cnn.Close

    Set cnn = Nothing

    End Sub

    对于EXCEL2007版本的电子表格,以上的cnn.Open后的字符串要改成"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"""

  • ?

    Excel职场必备—Vlookup快速搜索引用

    青梦

    展开

    Vlookup的基础用法,是一个纵向的查找引用函数。再简单来说就是,从一堆数据中,快速搜索并提取自己想要的数据。

    左图为有很多数据的原表,右图为我所希望得到的数据的表。那么如何快速去操作呢,我们一步步来看一下~

    01 确定你所需要的数据

    如图,我需要以下三个成分对应的Brand。

    02 输入函数

    在第一行对应的方格中输入函数=vlookup

    03 插入函数

    找到最上方的“公式”下的“插入函数(fx)”

    04 填写表格参数

    1)Lookup_value:因为要得到“海盐”对应的“Brand”,那么就选择“海盐”那格,如图,Lookup_value那栏会自动填写“海盐”那格所在的位置。

    2)Table_array:选择搜索的范围

    PS:这边需要注意,选择的范围的第一列一定是我所需要的数据的那列。比如:我需要的数据是成分和Brand,那么成分那一列一定是我选择范围的第一列,不能从序号那列开始选择范围。

    此外,我所需要的所有数据,都应该在选择的范围内。比如:我需要成分和Brand,那么我选择的这几列中,一定要包含成分那列和Brand那列。

    3)Col_index_num:输入“选择范围”中所需要的数据“对应的列数”。比如,我选择的范围是从成分开始到Brand一共四列,Brand位于我所选择的范围中的第四列,因此Col_index_num就应该写4。

    4)Range_lookup:固定搭配,一定要填写“0”

    05 按确定,得到所需要的数据

    End.

    来源:小Hey先森

  • ?

    利用VBA,建立起一个MDB数据库连接的通用代码

    灭龙

    展开

    今日讲解的内容为如何建立一个数据库的连接,并实例讲解利用连接从数据库中查到有用的记录,填在表格中的方法。

    我们要先打开一个工作表,它的A列数值为要在数据库中查询的字段,并把在数据库中查到此字段的其他内容填充到这个工作表中的B:G列的位置。好我们先看下面的代码,在代码的过程中均有详细的讲解。有的容易些,有的难懂些,不过都没关系,有兴趣的读者可以仔细地琢磨,都是一步一步看过来的。我在学VBA的时候,资料还很少很少,有的需要自己的摸索。待这个平台的资料多些了,也希望能有位大侠给出本书,利于大家的学习。

    1 Dim myData As String, myTable As String

    2 Dim wb As Workbook

    3 Dim ws As Worksheet

    4 Dim i As Long, j As Long

    5

    6

    7 Dim cnn As ADODB.Connection

    8 Dim rs As ADODB.Recordset

    9 Set wb = ThisWorkbook '指定工作簿

    10 Set ws = wb.Sheets("A-RR") '指定工作表名称

    11 Dim APPPATH

    12 APPPATH = ActiveWorkbook.Path '& "\" '路径名称

    13 ChDir APPPATH

    14 myData = "D:\RR" & "\myData.mdb" '指定新数据库名称(完整路径)

    15 myTable = "RR资料" '指定数据库的数据表名称

    '检查是否已经存在同名数据库文件

    16 If Dir(myData) = "" Then

    17 MsgBox (myData & "不存在!")

    '不存在的情况下,释放变量,退出

    18 Set wb = Nothing

    19 Set ws = Nothing

    20 Set rs = Nothing

    21

    22

    23 Set cnn = Nothing

    24 End

    25 Else

    '如果已经存在了数据库文件,就检查是否存在数据表

    '建立与数据库的连接

    26 Set cnn = New ADODB.Connection

    27 With cnn

    28 .Provider = "microsoft.jet.oledb.4.0"

    29 .Open myData

    30 End With

    '开始查询是否存在该数据表

    31 Set rs = cnn.OpenSchema(adSchemaTables)

    32 Do Until rs.EOF

    33 If LCase(rs!table_name) = LCase(myTable) Then GoTo hhh '如果查到则退出循环

    '继续查询

    34 rs.MoveNext

    35 Loop

    '释放变量,退出(这是没有查到的情况)

    36 Set wb = Nothing

    37 Set ws = Nothing

    38 Set rs = Nothing

    39

    40

    41 Set cnn = Nothing

    42 MsgBox ("不存在此工作表!")

    43 End

    hhh:

    44 End If

    '到此是找到了某个记录,并打开了数据库

    45 Sheets("A-RR").Select

    46 Range("B2:G3000").Clear '做填充数据的准备

    47 Set rs = New ADODB.Recordset

    48 t = 2

    49 Do While Cells(t, 1) <>""

    50 Cells(t, 1).Select

    51 Sql = "select * from " & myTable _

    52 & " where RR = " & " '" & ws.Cells(t, 1).Value & "'"

    53 rs.Open Sql, cnn, adOpenKeyset, adLockOptimistic

    54 If rs.RecordCount = 0 Then

    '如果数据库中没有工作表的某行数据,就

    55 ws.Cells(t, 2).Value = "No Find"

    56 ws.Cells(t, 3).Value = "No Find"

    57 Else

    '如果数据库中有工作表的某行数据,就将数据进行更新

    58 ws.Cells(t, 2).Value = rs.Fields(1)

    59 ws.Cells(t, 3).Value = rs.Fields(2)

    60 End If

    61 rs.Close '关闭,此处的RS必须要关闭,必须的。

    62 t = t + 1

    63 Loop

    64 MsgBox "完成!", vbInformation + vbOKOnly

    '关闭数据库及查询数据集

    65 cnn.Close

    '释放变量

    66 Set wb = Nothing

    67 Set ws = Nothing

    68 Set rs = Nothing

    69 Set myCmd = Nothing

    70 Set myCat = Nothing

    71 Set cnn = Nothing

    看看下面的截图:

    到此这项任务就完成了,利用VBA控制EXCEL是本平台的较高水平的内容,但程序的思想、思路和写函数是一致的,都要按规定的线路来进行。如果检测到没有按照自己的设想来运行程序,那是绝对不可以的。关注本平台,会经常有类似大段的代码共大家参考。当然,上述的代码也是解决这类问题的一个通用的代码,读者可以使用,没问题。

    分享成果,随喜正能量

  • ?

    Excel催化剂生成完全组合笛卡尔积结果表,数据库技术落地Excel

    苻尔珍

    展开

    在数据库的多表查询中,通常会有各种连接关系,同样地在Excel环境中,也有很大的场景需要用到类似数据库的多表查询,如经典的VLOOKUP就是其中一种类似LEFT JOIN查询的查询效果。在很多时候需要生成一个完全数据组合时,也是需要用到数据库的笛卡尔积查询表的原理,让两个表产生任意的完全组合,此次Excel催化剂同样将非常有价值的数据库技术,搬到Excel环境中供普通用户无需掌握任何数据库查询知识,轻松一键完成所要的数据结果。

    笛卡尔积查询表是什么?

    简单说就是两个表的两两组合,产生不重复的记录集,如A表有10行,B表有20行,两两组合出来的结果为200行,A表的第1行与B表关联,产生20条记录,A表总共10行数据,所以总共产生了20*10=200行数据。

    一般来说多表查询时,会对笛卡尔积查询表返回的结果进行筛选,如VLOOKUP的效果就是筛选出源表中LookupValue与查询表的查找列对应的某一行记录值相同的行,而不是返回所有查找表的行,所以一般笛卡尔积查询表会产生大量的数据,因其未经条件去筛选交叉后的结果表。

    使用场景

    很常见的一个场景,某一堆商品款号,想生成一份它所有尺码的数据表,用于关联后续其他的销售指标、库存指标等,防止因销售指标数据或库存指标数据某些数据缺失而遗漏掉部分数据,致使计算类似销售动销率、库存周转率等指标时,未能生成预期正确的结果。

    原有数据

    最终想要的数据结构

    其实两两组合,不局限说只有一列的数据表,可以有多列的。甚至多个表也能胜任,所有操作都是一键完成。

    原有数据

    多个表两两组合结果

    具体操作

    构造好需要生成结果表的数据源

    需要每个表有表头列标题,中间不断行等最基本的标准数据源结构表格要求。多个表之间列标题名不重复。

    点击生成按钮即可完成。

    只需简单一键,即可完成数据库管理员写一大堆SQL语句才能得到的结果,并且只需依赖于Excel的数据环境!

    结果表生成

    总结

    无数次听到外行人动不动就说颠覆Excel、取代Excel,说这样话的人,甚至连说话的资格都没有,连Excel是什么物种都不知道,只按自己认为的Excel是什么就作一些哇纵取宠吓人的结论,实在只能显示出自己的无知。

    Excel催化剂,致力于让Excel更伟大、更强大,让更多人可以享受到数据领域的各样技术的红利,数据库技术是一个非常棒的技术,Excel是一个非常棒的用户端使用软件,两者结合,借助Excel催化剂的作用,威力无穷。

  • ?

    实用小贴士:Excel数据源整理六部曲

    冯半兰

    展开

    Excel数据源是我们日常工作中最常使用的数据格式,在使用Tableau连接其做数据分析时,很多人会遇到这样的问题:打开的Excel跟想象的不太一样,甚至没办法直接用来做数据分析。因此,我们需要学习如何整理Excel数据源。

    为了更好的完成数据分析,Tableau通常建议您连接到未格式化的数据。也就是说,数据源可能是交叉表、聚合或包含其他无关信息。如果您的数据是这样的,就需要进行整理,因为Tableau无法查看或区分各个数据点与可能与数据相关的其他信息。

    在大多数情况下,如果您有这样的数据,您可以直接从Tableau连接到它,并使用数据解释器或其他清洁选项来解决数据的有问题的结构。少部分情况下,您可能需要在Tableau连接之前直接编辑Excel数据。

    以下是一些解决常见的格式问题的建议:

    >>>>

    以交叉表格式数据透视数据

    当数据格式化为交叉表格式时,表是列方向的。在面向列的表中,变量存储为列标题。但是,Tableau针对行向数据进行了优化。在面向行的表中,变量存储在行值中。

    例如,假设你有一个面向列的表格,它显示了小学生的数学,科学和历史分数。

    Tableau经过优化,可连接到面向行的表,其中数学、科学和历史值组织在名为“主题”的列下,每位学生的分数组织在名为“分数”的列下。您可以通过手动编辑Excel数据来旋转行中的列。或者,从Tableau连接到Excel数据,然后使用枢纽选项。

    删除预先汇总的数据

    数据往往可以预先聚合。也就是说,数据可以包含和、平均值、中位数等。预聚合数据的一个常见例子是小计和总计的形式。小计和总计数据从原始数据计算,但不是原始数据本身的一部分。

    例如,假设您有一个包含一小组小计信息的表。

    在这种情况下,需要删除预聚合的数据。要在分析中使用小计和总计,请从表中手动删除此类信息。然后,从Tableau连接Excel数据,并使用总计选项计算小计和总计。或者,从Tableau连接到Excel数据,打开数据解释器,然后使用总计选项。

    删除或排除介绍性文本

    作为报告传递的Excel数据可以包含介绍性文本的标题或块。由于Tableau希望在表的第一行中使用列标题或行值,所以在分析过程中可能会导致问题。

    例如,假设您有一个包含报表标题和日期的表。

    在这种情况下,需要删除标题和日期信息。要使用报告的标题和日期,请执行以下操作之一:

    从Excel数据手动删除此信息。然后从Tableau连接到Excel数据,并使用标题选项添加报告标题;

    从Tableau连接到Excel数据,打开数据解释器,然后使用标题选项;

    如果您无法从Excel数据中删除此信息,请创建命名范围并从Tableau连接到命名范围。

    将分层标题平铺到单个行

    一般来说,Tableau只希望Excel数据中的第一行包含列标题。包含多个列标题的数据在分析过程中可能会导致问题。

    例如,假设您有一个包含一个主标题和多个子标题的表。

    在这种情况下,标题的层次结构必须被平坦化或去除。为此,您可以直接在Excel数据中为层次结构中的每个标题手动创建一个新列。或者,从Tableau连接到Excel数据,然后打开数据解释器。验证您的标题是否正确平坦。

    确保没有空白单元格:如果为分层标题创建新列,请确保新列中的每个单元格都包含值。

    虽然您可能会为每一行重复相同的值,但重要的是每行都包含将数据与存储在分层标题中的数据相关联的数据。您必须手动从Excel数据中删除空白单元格。

    删除空白行

    要修复空白行,您必须从Excel数据中删除空行。

    添加缺少的标题

    确保没有丢失列标题。 要修复缺少的标题,您必须手动将丢失的标题直接添加到Excel数据。

  • ?

    各数据库的几种连接方式

    堪东蒽

    展开

    一、用DAO代码连接数据库

    '在使用DAO对象前应选定Visual Basic菜单下的[工程]中的引用了菜单中的[Microsoft DAO 3.6 Object Library]选项,或其它版本1.DAO代码与Access数据库连接

    2.DAO代码与没有密码的DBF文件数据库连接

    3. 'DAO代码与没有密码的Excel文件数据库连接

    二、用ADO控件连接数据库

    '也可直接在控件属性中设置以下各项1.ADO控件与Access2000数据库连接

    2.'ADO控件与DBF表连接

    3.'ADO控件与Excel表连接

    4.'ADO控件与Oracle数据库连接

    5.'ADO控件与SQLserver数据库连接

    三、用ADO代码连接数据库

    '在使用ADO对象前应选定Visual Basic菜单下的[工程]中的引用了菜单中的[Microsoft.ActiveX Data Object 2.5 Library]选项,或其它版本1.'ADO代码与Access2000数据库连接

    2.'ADO代码与DBF表连接

    3.'ADO代码与Excel表连接

    4.'ADO代码与Oracle数据库连接

    5.'ADO代码与SQLserver数据库连接

  • ?

    Excel同样可以操作MySQL中的数据,这里有完整教程

    笑蓝

    展开

    作为同门的数据库产品,Excel操作Access、SQLServer中的数据非常简单。但如果想在Excel中处理MySQL中的数据呢?MySQL是和php珠联璧合的一个数据库,网站开发中经常用到,如果Excel也能访问它就会给工作带来很多方便。

    例如,MySQL数据库中的用户登录数据表,有时希望在Excel中对该表进行一些分析:

    操作步骤如下:

    一、到mysql官网下载odbc连接驱动

    下载地址为:https://dev.mysql/downloads/connector/odbc/

    可下载的驱动程序共有4个文件,请根据自身情况选择下载。例如,我们现在使用的是64位的win7系统,那么就下载安装64位的驱动:

    32位和64位的驱动又分别包含2个文件,一个是安装包,一个是压缩包。一般选择下载msi安装即可。

    选择文件下载时,将弹出登录页面;如果不需要登录,可点击“No thanks, just start my download.”直接进入下载。

    安装驱动的过程中,有可能会出现这样的错误提示:

    如果使用压缩包安装,则会直接提示缺少“msvcr120.dll”的错误。

    这两种错误其实都指向了同一个问题,最简单的解决办法就是安装Visual C++ 2013运行库。微软官方的下载地址为:

    https://microsoft/zh-cn/download/details.aspx?id=40784

    同样的,这里有32位和64位2种文件可供下载,请根据自身情况选择。

    二、创建数据源

    进入“控制面板--系统和安全--管理工具”,双击打开“数据源(ODBC)”,点击“添加”:

    点击“完成”后,接着设置要连接的mysql数据库:

    点击“ok”后即可增加该数据源:

    三、在Excel中建立连接

    打开Excel,选择“数据-自其它来源-来自数据连接向导”:

    选择“odbc dsn”:

    “下一步”后选择刚刚创建的mysql:

    然后再选择要连接的数据库及库中的数据表:

    接着再设定一个连接名称就ok啦:

    注意:mysql数据库中的表名称和表字段不能使用中文,否则将带来乱码问题。因为excel和mysql的默认编码方式不一样,处理起来会相当麻烦。

excel连接数据库

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP