2011-02-04 69 views
1

在python中,使用libs处理excel文件,我可以做我想做的事。 但现在,因为我正在尝试学习VBA,所以我需要提出这个问题。VB:在excel表上过滤数据

我正在制作一个大约有12列和50000行的工作表。 该数据代表发送给公司的请求。 5#列表示它的代码,10#表示完成它的时间。 但是,例如,行5,10和12可能属于同一个请求,并且为了组织目的而被分开。

我需要把这些数据,这样我可以:

  1. 列6#代表谁回答请求人 。所以,我需要 将每个请求放在“人员的 工作表”上。另外,在开始向 添加请求之前,为他创建此 工作表。

  2. 对于每个人(工作表), contabilize请求类型(列 2#)由他出席。即,在其工作表 上创建 另一个表格,其中显示: Type_Of_Request | Number_of_ocurrences

  3. 创建一个最终的报告工作表,显示出相同的表 以上,但占所有请求 (没有人过滤器)

观测值:我知道,在计算器的大多数问题都解决一个具体的问题,但我在这里要求开始路线。 甚至可能的解决方案。

为了便于说明,我认为解释python中使用的算法会帮助那些了解python和VBA的人在这里帮助我。 因此,对于每一个问题:

  1. 创建管理6#列数据的字典。 这个字典将把这个人的唯一名字作为关键字,并且对于他回答的每个请求,它将被添加到指向他的名字(字典关键字)的列表中。 是这样的: {PERSON1:[request1,请求2,request3,...],...}

  2. 管理所述2个#列数据(请求类型)另一种字典。 现在,我将有一个字典,其中每个条目都有一个列表,显示那种类型的请求。 定位完所有请求之后,我在列表中做了一个简单的总和,并填充了一个表(key,sum(dict [key])) 其中dict [key]是相同类型的请求列表,它会返回该类型的请求总数。 喜欢的东西: {request_type1:[request1,请求2,request3,...],...}

  3. 好了,同样的2,但应用在初始完整表格的算法。

我不知道VB是否有类似python的字典类型有(并且帮助很多!),甚至因为我是VB新手。 非常感谢您的帮助。

+0

没有评论你的实际问题/算法,我会让你知道你可以很容易地使用与VBA词典:http://stackoverflow.com/questions/1309689/hash-table-associative-array-in-vba/1309739#1309739 – jtolle 2011-02-04 16:37:45

+0

我检查了提示,这是一个很好的。在VBA上解释一点关于Dicts的信息。谢谢 – 2011-02-07 09:30:23

回答

3

vba确实有一个字典类型,但它的用法可能不反映python的实现。 (参见:http://msdn.microsoft.com/en-us/library/aa164502%28v=office.10%29.aspx

你也可以创建一个用户定义的类型(参见:http://msdn.microsoft.com/en-us/library/aa189637%28v=office.10%29.aspx

如果你有一个可行的解决方案,这是你最好的起点。许多Python字符串函数等可能甚至被命名为相同或足够接近,以便您可以在语言参考中轻松找到它们。

+0

谢谢你的提示,我会再研究一下,并试图找出答案。 – 2011-02-07 09:31:03

0

对于使用Jet/ACE连接的Excel,您可能会发现ADO更容易。它也将允许使用rs.CopyFromRecordset将合适的集合写入工作表。