我在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字段(即等级)?
感谢。
答案 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)
我看不到快速处理它的方法:
VLOOKUP()
公式答案 2 :(得分:0)
除非你需要,否则我不会使用VBA。创建一个新工作表并在其上放置外部数据查询。如果您使用的是Access或SQLServer,则OLEDB可以直接使用它们。否则,您可以使用MSQuery建立ODBC连接。带上相关列,序列号和等级。看起来序列号是唯一的,因此您需要从数据库中携带SKU。
然后使用VLOOKUP公式将成绩拉入主工作表。如果愿意,您甚至可以使用外部数据查询隐藏工作表。