如何将SQL转换为Excel公式?


-1

我有一个包含原始数据的Excel工作表,我想在另一个表中为其进行自定义视图以进行报告。

如何将以下伪代码翻译为Excel?

select ColA, ColB, ColC from SheetA where (SheetA.ColD in ("x","y","z") or SheetA.ColE in ("1","2","3"))

我正在寻找VLOOKUP MATCH和INDEX的解决方案。


您是否从Excel内部连接到数据库?如果是这样,你可以使用查询
戴夫

不,我得到一个转储文件。
Bastl 2015年

在这种情况下,如果您有数据,请选择全部,然后添加过滤器(或更好,单击插入,然后选择表并选择我的表有标题)。在这里,您可以过滤并执行相同的事情
戴夫

我特别想要从视图中分离数据。另外,我已经将x,y,z实现为命名范围。
Bastl 2015年

2
在Excel 2010(和其他)中,您可以创建对Excel文件的查询。在数据功能区的“获取外部数据”部分(左侧)中,选择“从其他来源”,然后选择“从Microsoft查询”。您应该已经为“Excel文件”设置了数据源,所以从那里开始,尝试一些事情,如果遇到问题就回来。
工程师Toast 2015年

Answers:


2

从注释中复制:在Excel 2010(和其他)中,您可以创建对Excel文件的查询。在数据功能区的“获取外部数据”部分(左侧)中,选择“从其他来源”,然后选择“从Microsoft查询”。您应该已经为“Excel文件”设置了数据源。之后,您可以在MS Query中构建一些可行的东西。


如果你真的想要一个公式响应,你将不得不处理一些混乱。首先,使其更容易加载的最重要步骤是在原始数据中添加一个字段来处理该WHERE语句。我要打电话给它ColF,它的公式可能看起来像这样:

=SUM(IFERROR(MATCH([@ColD],x,0),0),IFERROR(MATCH([@ColD],y,0),0),IFERROR(MATCH([@ColD],z,0),0),IFERROR(MATCH([@ColE],range1,0),0),IFERROR(MATCH([@ColE],range2,0),0),IFERROR(MATCH([@ColE],range3,0),0))>0

对于自定义视图,您需要创建另一个与原始行具有相同行数的表。此外ColAColBColC,你可能需要一个领域来帮助查找。你可以把公式放在每一列中,但这只是膨胀,没有任何理由,会减慢计算速度。查找部分看起来像这样(注意它是用CTRL+ ALT+ 输入的数组公式ENTER):

{=IFERROR(SMALL(IF(Table1[ColF],ROW(Table1[ColF])),ROW()-1),"")}

这将是原始数据中符合公式定义的标准的所有行号的列表ColF。最后会有一些空白。接下来的几个字段就是INDEX基于Row

=IFERROR(INDEX(Table1[ColA],[@Row]-1),"")
=IFERROR(INDEX(Table1[ColB],[@Row]-1),"")
=IFERROR(INDEX(Table1[ColC],[@Row]-1),"")

有你的桌子。你必须通过你喜欢的任何方式处理底部的空白行。自动过滤器可以正常工作。如前所述,您可以Row通过使其他公式更长的数组公式来摆脱该字段:

{=IFERROR(INDEX(Table1[ColA],SMALL(IF(Table1[ColF],ROW(Table1[ColF])),ROW()-1)-1),"")}

......但这会让事情变慢。


我仍然想要纯粹的Excel公式答案,仅仅是为了好奇......
Bastl 2015年

+1只是为了解问题的意思
Dave
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.