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

Excel中有超过5万行的数据,如下所示:

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 

我怎样才能实现这个使用macros? 如果不可能,是否可以自动化逐行运行的SQL语句以提取rq'd字段(即Grade)?

谢谢。

如果我理解的很好,我应该很容易用Excelmacros来实现。

首先将您的数据库的数据输出到Excel文档的单独工作表中。 确保两张工作表(包含数据的原始表单和带有数据库数据的新表单)都被sorting,否则用macrossorting。

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

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

编辑:因为你有很多logging在SQL工作表中输出表,我build议你导入所有的Excel数据在一个临时的SQL表,做一个简单的select通过join与另一个临时表和导出结果到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. build立一个macros,将调用每行的SQL语句>>将需要很多的数据库的请求
  2. build立一个唯一的SQL查询,可以满足所有的价值>>我看不到一种方法来做到这一点
  3. 我能看到的唯一方法是将SQL值导出到您的工作簿的另一个工作表并使用VLOOKUP()公式

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

然后使用VLOOKUP公式将成绩拉入主表。 如果你喜欢,你甚至可以隐藏外部数据查询表。