【问题标题】:VB: Filtering data on excel tableVB:过滤excel表格上的数据
【发布时间】:2011-06-21 11:19:28
【问题描述】:

在 python 中,使用库来处理 excel 文件,我可以做我想做的事。 但是现在,因为我正在努力学习 VBA,所以我需要问这个问题。

我正在处理一个大约有 12 列和 50000 行的工作表。 该数据代表发送给公司的请求。 5#列代表它的代码,10#是完成它所花费的时间。 但是,例如,第 5、10 和 12 行可能属于同一个请求,只是为了组织目的而划分。

我需要处理这些数据,以便我可以:

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

  2. 对于每个人(工作表), 稳定请求类型(列 2#) 由他出席。即,创建 工作表上的另一个表 显示: Type_Of_Request | Number_of_currences

  3. 创建最终报告工作表,显示相同的表格 以上,但考虑所有请求 (没有人物过滤器)

Obs:我知道 stackoverflow 上的大多数问题都是为了解决一个特定的问题,但我在这里要求开始路线。 如果可能的话,甚至是解决方案。

出于解释的目的,我认为解释python中使用的算法将有助于了解一点python和VBA的人在这里帮助我。 因此,对于每个问题:

  1. 创建一个管理6#列数据的dict。 该字典将以该人的唯一姓名作为键,并且对于他回答的每个请求,它将被添加到指向他的姓名(字典键)的列表中。 就像是: {person1: [request1, request2, request3, ...], ... }

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

  3. 嗯,与 2 相同,但将算法应用于初始完整表。

我不知道 VB 是否有像 python 那样的 dict 类型(并且有很大帮助!),即使我是 VB 的新手。 非常感谢您的帮助。

【问题讨论】:

  • 不评论您的实际问题/算法,我会让您知道您可以轻松地使用带有 VBA 的字典:stackoverflow.com/questions/1309689/…
  • 我检查了提示,这是一个很好的提示。稍微解释一下 VBA 上的字典。谢谢

标签: excel vba filter


【解决方案1】:

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 字符串函数等甚至可能命名相同或足够接近,以便您在语言参考中轻松找到它们。

【讨论】:

  • 感谢您的提示,我会再研究一下并尝试弄清楚。
【解决方案2】:

您可能会发现使用 ADO 会更轻松,它与使用 Jet/ACE 连接的 Excel 配合得非常好。它还允许使用 rs.CopyFromRecordset 将合适的集合写入工作表。

【讨论】:

  • 感谢您的提示。虽然,ADO 比我想象的要多得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
相关资源
最近更新 更多