有没有办法列出包含值的 Excel 表的名称?

有没有办法列出包含值的 Excel 表的名称?

我有一本包含多张工作表的 Excel 工作簿。第一张工作表称为主工作表,其中有一个表格,B 列包含多个名称(标题第一个为“姓名”)。

其中一些名称出现在其他工作表上。有没有办法我可以在其他工作表上搜索这些名称,并将它们列在主工作表的下一列中?

例如,如果在主表的 B 列中我有 John Smith,并且他在表 A 和表 B 中但不在表 C 中,则我希望在主表中将表 A 和表 B 列在 John Smith 旁边,这样就会列出所有姓名。

我怎样才能做到这一点?

答案1

警告:这是一个缓慢的解决方案,不推荐用于大型数据集。它很慢。关闭自动公式更新会有所帮助。

这是一个非常缓慢和笨重的方法,但它只要您的数据不是太大而导致内存不足,它就可以正常工作。

假设您有一个包含四张工作表的工作簿:Sheet1、Sheet2、Sheet3 和 Sheet4。

Sheet1 包含姓名列表,其他工作表包含有限范围内的一些数据。在我的示例中,我将搜索范围限制为前 1,000 行。当我尝试搜索 10,000 行时,出现了“内存不足”错误。我还尝试搜索 A:Z,结果也成功了。

Sheet1 单元格中有“John” A2。Sheet2 和 Sheet4 某处也有“John”。Sheet3 没有。我将此公式输入到单元格中Sheet1!A3

=TEXTJOIN(", ",TRUE, IF(COUNTIF(Sheet2!$A:$Z,$A2),"Sheet2",""), IF(COUNTIF(Sheet3!$1:$1000,$A2),"Sheet3",""), IF(COUNTIF(Sheet4!$1:$1000,$A2),"Sheet4",""))

它基本上只是这个位反复出现的一些变体,每张表一次:

IF(COUNTIF(Sheet2!$A:$Z,$A2),"Sheet2","")

...然后我们将所有结果合并到一个列表中。该公式计算Sheet2!A:Z值为“John”的所有实例。如果结果大于 0,则视为真,因此整体结果为“Sheet2”。否则,它只是一个空字符串。

您还可以为每个工作表名称创建一个辅助列。在每个工作表名称中添加此代码片段,并使用 textjoin 合并所有这些结果。实例越多,速度就会越慢。

相关内容