【问题标题】:Using an Excel macro to query a spreadsheet使用 Excel 宏查询电子表格
【发布时间】:2010-11-04 14:39:44
【问题描述】:

所以我在一些电子表格中有一些数据,我发现对于我编写的所有宏、过滤和论坛,以简化它并将其缩小到我想要的范围内,编写起来会容易得多针对几个表的一些 SQL。

我想我想知道:是否可以在工作簿中有一个宏来查询某些工作表中的数据,然后用结果集填充另一个工作表?如果是这样,我该怎么做?

(是 Excel 2003)

【问题讨论】:

    标签: sql excel excel-2003


    【解决方案1】:

    这个不需要宏。

    转到DATA-> Import External Data -> Import Data 然后基本上按照提示进行操作。您可能需要建立新的数据连接(底部为New Source),但一旦连接,您就可以在 Excel 中本地编写查询。

    我猜熟悉 DB 的人会很快搞清楚。如果没有,here's a tutorial.

    【讨论】:

    • 太棒了!这看起来可能对我有用。唯一需要补充的是源文件需要将数据保存在列表中(或者可能是其他东西),否则 Excel 会抱怨没有表格。
    • 是的,如果您正在执行复杂的逻辑,Excel 也可以从视图中读取(即,如果将逻辑放入 SQL 中比放入 Excel 中更容易)。
    • 这里是在 Excel 范围内定义表名的链接:publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/…
    • @JNK: ...那么...这些查询通常运行得这么慢吗?
    • @Frustrated - 像所有 SQL 一样,它在很大程度上取决于表设置、查询本身、版本、yadda yadda yadda。
    【解决方案2】:

    当你可以像这样简单地查询excel文件时,为什么还需要使用宏:

    SELECT Column1, Cloumn2, Column3
    FROM [SheetName$Range] 
    WHERE Condition
    

    例子:

    SELECT ProductID, Qty, Price
    FROM [SheetName$A10:C21] 
    WHERE ProductID = 545
    

    【讨论】:

    • 这在 Excel 2003 中有效吗?只是为了它,我尝试将公式=select * from [Sheet1!A1:B3] 输入到工作表上的单元格中(显示的范围是有效的),Excel 不断给出错误提示“该名称无效”并突出显示[Sheet1。这有什么其他技巧吗?我猜你并不是真的想把它作为一个公式,也许是在 VBA 中完成的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多