0

我有很多 excel 数据以相同的格式分布在 32 个文档中,列出了信息。总行数将超过 600 万行。

我有另一个包含几千行的文档。此新文档中 C、E 和 L 列的 CONCATENTATE 可以与其他 32 个文档中的任何一个中 D、F 和 N 列的 CONCATENTATE 相同。

我想找到相同的信息,并从每个较大的文档中为小文档中的每一行抓取它的漏洞。

目前,这需要我连接每个较大文档的信息,删除所有空格和标点符号,并使用 32 个 IFERROR 计算,每个计算都包含一个 VLOOKUP。最后一个花了整个晚上。所有其他人都崩溃了计算机。

必须是这样做的更好方法???

例如。

小文档:

标题1 | 标题2 | 标题3

较大的文档(全部 32 个)

事实1 | 事实2 | 事实3 | 标题1 | 标题2 | 事实4 | 标题3

如果小文档的标题 1,2 和 3 的连接在较大文档的标题 1,2 和 3 的任何连接中找到相同的信息(删除所有空格和标点符号)。我想从较大的文档中复制该行的所有信息,包括与较小文档中的信息行相邻的标题和事实。

4

3 回答 3

2

哎呀呀。Excel 不适合做这样的事情。这只是错误的工具。因此,假设您坚持这一点,我会尝试创建一个 Access 数据库,链接您需要的每个电子表格,然后编写一个查询。我不完全清楚您想对匹配的信息做什么,但您可以将其导出到新的电子表格,或将电子表格链接到该查询。

在 Access (2007+) 中,转到外部数据选项卡,单击导入部分中的 Excel,然后选择链接。如果这仍然太慢,您将需要复制电子表格并执行查询。

于 2012-04-11T15:31:34.133 回答
1

在数据库而不是 Excel 中会好得多,
但要使其在 Excel 中有效工作,您需要使用 VLOOKUP 或 MATCH 的二进制搜索选项(排序近似匹配)。这比线性(未排序)搜索快几个数量级:

1. 在 32 个工作表和小工作表上创建额外的列进行连接等。
2. 使用连接列对 32 张表上的数据进行排序
3. 使用带 IF 的 Double VLOOKUP 将近似匹配转换为精确匹配,如下所示

=IF(VLOOKUP(PartNumber,PartsList,1,TRUE)=PartNumber, VLOOKUP(PartNumber,PartsList,4,TRUE), “Missing”)


有关此公式的更详细说明,请参阅http://fastexcel.wordpress.com/2012/03/29/vlookup-tricks-why-2-vlookups-are-better-than-1-vlookup/

于 2012-04-12T10:23:25.223 回答
0

如果有一个结构让您知道需要在哪个工作表中搜索,您可以查看 INDIRECT 功能是否可以帮助您。否则,我建议您将数据导入数据库(例如Access)中,然后查询您的数据。

于 2012-04-11T15:27:54.377 回答