我希望以类似SQL的模式从Excel工作表中获取数据。意思是,我有以下列:code, type, name, product_code, price, quantity
。
我想要做的是从这张表中获取数据,就像它是一个db表一样,我执行以下操作:
select code, type, name, product_code, sum(price), sum(quantity) from table
group by code, type, name, product_code
如何在VBA中执行此操作?
答案 0 :(得分:5)
按code, type, name, product_code
订购您的数据,然后编写一个循环,遍历工作表上的每一行,随着时间的推移聚合。当这四个字段中的任何一个更改值时,您将进入一个新组,因此请写出当前的聚合并在当前行重新开始。
据我所知,没有任何方法可以在VBA中对Excel表单编写SQL;你只需自己编写循环。
就个人而言,我会避免使用VBA并使用数据透视表。
答案 1 :(得分:1)
您可以使用Access SQL查询工作表,例如using ADO classic。但是,因为数据类型是在运行时使用数据和注册表项的当前状态确定的(这可能导致值被强制转换为错误类型和/或无法强制值的空值),导入可能更好将数据放入SQL数据库的表中,以便可以在设计时指定数据类型,而SQL Server非常适合。
答案 2 :(得分:1)
SQLite for excel会让你在内存中这样做。我并不完全确定LINQ为.NET人群提供了什么,但似乎你可以使用SQLite来模拟它。我用它来验证它是否有效,但还没有围绕它构建一个实用程序类。