如何从数据库中提取信息到excel

时间:2011-08-12 12:46:07

标签: sql excel

我在Excel中有超过50,000行数据,如下所示:

SKU     SerialNo
AZQW    10001   
XSWE    10023   
GTYH    10230   
MKLJ    10378       
GHYU    10567       
GTYH    10895

我希望提取的数据库中的表格如下所示: -

SKU     SerialNo    Grade
AZQW    10001           A
XSWE    10023           B
CVFR    10043           D
GTYH    10230           B
MKLJ    10378           A
RTYH    10456           C
GHYU    10567           D
AZQW    10784           B
GTYH    10895           B

excel中的最终输出应如下所示。添加成绩信息: -

SKU     SerialNo    Grade
AZQW    10001   A
XSWE    10023   B
GTYH    10230   B
MKLJ    10378   A
GHYU    10567   D
GTYH    10895   B

如何使用宏来实现这一目标?如果不可能,是否可以自动执行逐行运行的SQL语句以提取rq'd字段(即等级)?

感谢。

3 个答案:

答案 0 :(得分:1)

如果我理解得很好,我应该很容易使用Excel宏来实现。

首先将数据库的数据输出到Excel文档的单独工作表中。确保两个工作表(带有数据的原始工作表和带有数据库数据的新工作表)都已排序,否则使用宏对它们进行排序。

然后在两个列表中向下并在行匹配时将等级附加到原始工作表的“SerialNo”列。

完成后,不要忘记删除包含DB数据的工作表。应该比调用50 000次数据库更好,我通常会尽量减少数据库调用次数,因为它们很慢。

编辑:由于你必须在SQL工作表中输出许多表中的记录,我建议你在临时SQL表中导入所有的Excel数据,通过将临时表与另一个表连接并导出来轻松选择结果到Excel文件!

select t1.SKU SKU, concat(t1.SerialNo, "  ", t1.grade) SerialGrade from yourTable t1
    join tempTable t2 on t2.SerialNo = t1.SerialNo
    orderby t1.SerialNo ASC

答案 1 :(得分:0)

我看不到快速处理它的方法:

  1. 构建一个可以为每一行调用SQL语句的宏>>需要很多对db的请求
  2. 构建一个唯一的SQL查询,该查询足以满足所有值>>我看不到这样做的方法
  3. 我能看到的唯一方法是将SQL值导出到工作簿的另一个工作表并使用VLOOKUP()公式

答案 2 :(得分:0)

除非你需要,否则我不会使用VBA。创建一个新工作表并在其上放置外部数据查询。如果您使用的是Access或SQLServer,则OLEDB可以直接使用它们。否则,您可以使用MSQuery建立ODBC连接。带上相关列,序列号和等级。看起来序列号是唯一的,因此您需要从数据库中携带SKU。

然后使用VLOOKUP公式将成绩拉入主工作表。如果愿意,您甚至可以使用外部数据查询隐藏工作表。