借助一些Excel公式,您可以在Excel的两种最广泛使用的表设计之间移动数据...并自动将数据从源文件转换为更有用的形式。
越来越多的企业Excel用户将其报告和分析链接到Excel表。这样,他们可以在几秒钟而不是几小时内更新它们。
用户通常依赖两种类型的表来获取数据:垂直表和水平表。尽管每种表都有其优点,但是当您需要一种格式的数据但使用另一种格式的数据时,使用两种类型的表可能会带来挑战。
但是,使用三个Excel工作表功能将使您可以轻松地在这些表格式之间移动数据。
垂直Excel表垂直Excel表格
如果您拥有Excel 2007或更高版本,并且在一家拥有大量数据的公司中工作,您可能已经看到过类似此类的Excel表。
(我已在此页面上的大多数表格中间隐藏了大多数行和/或列,这使您可以看到表格的所有四个角。)
我将其称为“垂直表”,因为日期当然在垂直的列中。
该表的一般格式是从关系数据库获得的数据的典型格式。它有日期字段,键码和金额字段,每行都有很长的列。
请注意,该表没有代码说明,也没有有关每个代码的其他信息。这是因为如果关系数据库的表又高又瘦,则关系数据库以及Power Pivot for Excel的效率会大大提高。
Excel中关键代码的尺寸表
垂直尺寸查询表
要获取有关代码的其他信息,您必须从维查询表中提取数据,有点像这样。
下表显示了有关每个代码的两种信息。首先,它显示了描述。(当然,对您自己的数据的描述将提供更多信息。)
其次,此表具有一个乘法(“多”)列,通常以两种方式使用。
首先,一些外部数据(例如经济和股市数据)以数千或数百万为单位。因此,如果打算在内部使用此数据,将其转换为报表中的数据始终是一个好主意。在这里,代码C009的源数据总是成千上万,因此在报告中将其乘以1,000会将数据转换成一个。
其次,如果数据包含借方和贷方(借方为正数,贷方为负数),则将每个总帐帐户的值乘以其自然符号通常很有用。也就是说,您将应借记的帐户乘以1,将应贷记的帐户乘以-1。这样做时,每个带有自然符号的帐户都将变为正数,这通常使这些帐户更易于在报表中使用。
当然,从关系文件导出的数据通常包括描述和其他维度数据。但这并不总是一件好事。首先,由于许多描述可以重复很多次,因此您的工作簿变得比原来大得多。
其次,这些数据通常可能是不正确的,包括拼写错误的描述,奇怪的缩写,不寻常的大小写文本以及过时的信息。第三,可能不会包含您需要的某些尺寸数据,例如上面显示的“乘法”列。
因此,即使您从关系数据库下载的数据中获得了有关代码和其他关键项的信息,通常也最好维护自己的维查找表,就像上面的表一样。
水平“灰色单元”表
我的 Kyd作战室仪表板模板使用此水平表。由于行和列的边框为灰色,因此我将其称为灰色单元格表。
水平Excel表格
该表包含与前两个表相同的数据。您可以通过将其左上角和右下角数字与第一个表中的顶部和底部数字进行比较来确认这一点。
与竖直桌子相比,此桌子的设计具有多个优点。首先,设计将上述两个垂直表中的数据合并为一个水平表。因此,通常更容易设置和维护。
其次,如果您需要手动输入数据,或从其他来源复制并粘贴数据,则这种布局通常比关系样式表(如顶部Excel表)更易于管理。
但是,如果您的源数据来自关系样式的CSV文件或数据导入,则更新此表可能需要额外的工作。
您的桌面应该放在哪里?
如果您有 Kyd War Room,我建议您复制Dash_Data_Act.xlsx工作簿,以用于以下讨论。如果您喜欢结果,可以将新版本换成旧版本。
通过这种方法,您的仪表板和其他报表仍可以从灰色单元数据库返回数据,该数据库可以使用链接到Excel Table的公式来获取其 数据。该表每个月都会通过快速复制和粘贴进行更新。
如何设置公式以从Excel表填充灰单元数据库
假设每个月您下载的数据看起来像下面左侧的蓝色表格,并且您想使用此数据填充右侧的灰色表格。更具体地说,假设您要设置2012年12月的数据,如下表所示。
从垂直Excel表更新水平表
步骤如下:
1.在灰色单元格表中插入新列以包含新月的数据。例如,在这里,我插入了列BA来包含2012年12月的数据。
2.将日期单元格从前一列复制到新列,然后根据需要更新日期。例如,在这里,我将单元格AZ2复制到单元格BA2,然后将日期更改为12/1/2012。
3.将新月的数据添加到蓝色源表的底部,该表位于不同的工作表中,但与灰色数据表位于同一工作簿中。通常,您只需要复制数据导入或Excel中打开的CSV文件中的数据,然后粘贴到蓝色表格底部下方的第一行即可。
粘贴数据时,表格应自动展开以包括新数据。如果不是,请选择表中的任何单元格,然后选择“数据工具”,“设计”,“属性”,“调整大小表”,然后在“调整大小表”对话框中为表指定新的底部行。
4.您将使用 SUMIFS函数从表中检索数字数据。如果您不熟悉此功能,则可能需要花费一分钟时间来浏览链接并继续阅读。这样做时,您会发现这是SUMIFS函数的语法:
SUMIFS(总和范围,标准范围,标准...)
sum_range 必需。一个或多个要在行或列中求和的单元格,包括数字,范围名称或包含数字的单元格引用。空白和文本值将被忽略。
条件范围 。评估关联标准的第一个范围。条件范围中的错误值将被忽略。
要求的标准 。以数字,表达式,单元格引用或文本形式的条件,这些条件定义了将在Criteria_range1参数中添加哪些单元格。例如,标准可以表示为99,“> 99”,B4,“ sales”或“ 99”。
... 可选。重复对criterias_range和criterias参数对,总共为127对。
5.在为以下公式显示的单元格中输入公式:
BA4:= SUMIFS(TableAct [Amount],TableAct [Codes],$ B4,TableAct [Date],BA $ 2)
这里...
sum_range是TableAct [Amount]。 TableAct是我命名为蓝色Excel表格的名称,而 Amount是该表格中我将在其中找到所需编号的列的名称。也就是说,我希望SUMIFS函数从表的Amount列返回数据。
·条件范围1是 TableAct [Codes]。这是我决定使用的表格中的第一个条件列。
·条件1是$ B4,其值为C001。也就是说,在此行中,我希望SUMIFS函数仅在TableAct [Codes]中找到“ Code C001”的情况下返回数据。
·条件范围2是 TableAct [Date]。
·条件2为BA $ 2,价值为12/1/2012。也就是说,在本专栏中,我希望SUMIFS函数仅在TableAct [Date]中找到2018/12/1的情况下才返回数据。
5.将该公式复制到上图所示的列中。
当然,如果要更新现有表,则可能只是从相邻列中复制公式列。
如何设置公式以使用维数据填充灰色单元数据库
上一组公式更新了灰单元数据库中的数字。但是我们显然不能使用和公式在此处的灰色单元格表格中填充描述字段。
相反,我们使用 INDEX 和MATCH 函数。
(在这个特定示例中,我们也可以使用 VLOOKUP函数。但是由于INDEX-MATCH比VLOOKUP灵活得多,而且速度通常更快,因此我从未在实际工作中使用VLOOKUP。)
假设您具有上面显示的灰色单元格表,并且想要在单元格C4中输入公式以从左侧的蓝色尺寸表返回正确的描述。为显示的单元格输入以下公式:
C4:= INDEX(TableDim [Desc],MATCH($ B4,TableDim [Code],0))
此处,INDEX函数从上图所示的蓝色TableDim表的Desc列返回数据。MATCH函数指定INDEX函数应返回哪个行索引号。
为了计算正确的行索引号,MATCH在TableDim表的“代码”字段中查找在单元格B4中输入的值(即“ C001”)。由于第三个参数为零,因此不需要对数据进行排序,如果未找到“ C001”,则MATCH将返回#N / A。但事实证明,C001是找到的第一项,因此MATCH返回值1。
因此,INDEX返回在蓝色表的Desc列中找到的第一个描述:“ C001 Act Desc”。
一个类似的公式返回Mult值:
D4:= IF(INDEX(TableDim [Mult],MATCH($ B4,TableDim [Code],0))= 0,“”,
INDEX(TableDim [Mult],MATCH($ B4,TableDim [Code],0) ))
(尽管此公式显示在两行中,但是您当然要在一行中输入它。)
在此公式中,第一个INDEX-MATCH节返回第4行的Mult值。如果该值通常为零,则该公式返回一个空字符串;否则,该公式将返回非零的Mult值。
如何设置公式以从灰色单元格表填充Excel表
我们还可以使用SUMIFS朝另一个方向发展。也就是说,我们可以使用它从灰色单元数据库填充Excel表。
要首次设置蓝色表格,我们首先需要设置“日期”和“代码”列的值。与在C列中设置公式相比,这样做所需的时间更长。
设置日期和代码值...
1.在新工作表中,输入右上方蓝色表格第2行中显示的三个列标题。
2.从灰色单元格表中复制带有29个代码的区域,并将该区域粘贴到蓝色表中的单元格B3中。
3.在单元格A3中输入日期1/1/2009,并将其向下复制到该列中,直到29个Codes为止。
4.因为灰色单元数据库有48个月的数据,每个月有29个代码,所以蓝色表将具有1392(48 x 29)行数据。因此,请在C列中设置一个临时数字列作为参考,该列从1到1392。
为此,请在单元格C3中输入值1,然后按Ctrl + Shift +向下键以选择从C3到电子表格底部的所有单元格。现在选择“主页”,“编辑”,“填充”,“系列”。在“系列”对话框中,将“停止值”指定为1392,然后按OK ...,这将为您提供数字列用作参考。
5.将B列中的29个代码复制并粘贴到最后一个代码下面的第一个单元格中。这应该填充范围B32:B60。
6.在表格中最后一个2009年1月下方的第一个单元格中,输入显示的单元格的公式...
A32:= DATE(YEAR(A3),MONTH(A3)+1,1)
该公式返回2009年2月。将公式向下复制到范围A33:A60 ...,与您刚刚粘贴的代码相邻。
7.复制范围A32:B60,然后将其与您设置的计数器列平行粘贴。这是一种简单的方法:
·按Ctrl + C复制范围后,选择C列中的一个计数器单元格。
·按Ctrl +向下键可“滑动”至该数字列的底部。
·按两次向左箭头键,移至该底行的A列。
·按Ctrl + Shift +向上键将活动单元上方的所有单元格选择为A列中公式的最后一行。
·仅按住Shift键,然后按一次向下箭头键,以便仅选择空白单元格。
·按Ctrl + V粘贴到区域A61:B1394。
8.将日期值和日期公式列更改为日期值。为此,请选择整个日期列。按Ctrl + C复制它们;按Ctrl + Alt + V启动“选择性粘贴”对话框;选择值,然后按确定。
现在,您可以输入从灰细胞数据库返回适当值的公式。在这里,我们为显示的单元格使用INDEX-MATCH-MATCH公式:
A3:= INDEX(例如ActData,MATCH($ B3,例如ActCodes,0),MATCH($ A3,例如ActDates,0))**
该公式从为Kyd War Room仪表板模板设置的数据库中返回数据。该数据库使用范围名称(例如ActCodes,ActCodes和ActDates)指定可以找到数据,代码和日期的区域。
INDEX公式返回由两个MATCH函数指定的eg.ActData范围内的值。第一个MATCH函数返回指定的Code值的行索引号,第二个MATCH函数返回指定的Date值的列索引号。
最后,既然普通表已经完成,您可以将其更改为Excel表。为此,选择表中的任何单元格,然后选择“插入”,“表”,“表”;在“创建表”对话框中,确保选中“ 我的表具有标题”;然后选择确定。
如何检查工作
我第一次设置这些表格和公式时,会“四舍五入”它们。也就是说,我从灰色单元格表开始,用链接到灰色单元格表的公式设置蓝色的Excel表,然后设置第二个带有链接到蓝色Excel表的公式的灰色单元格表。
最后,我建立了一个对帐表,该表对开始和结束的灰色单元格表进行了比较。这样,我确保所有公式都可以双向使用。