我有一个包含两个工作表的电子表格。第一个工作表(源数据)包含一个包含 3 列的表格:
我想在第二个工作表(电子邮件)上显示该表的前两列,因此我使用公式来引用源表的特定列:
如果它也是一个表格那就太好了,这样我就可以对数据进行排序/过滤。
但是,这会导致一些奇怪的问题。例如,如果我重新排序源数据工作表上的数据,在中间插入一个新行,或者从中间删除一行(如下面的屏幕截图所示),第二个工作表就会中断,并且第三列([email protected]
)的值会显示为错误的记录(Kate Ostin
):
将第二张表(电子邮件)转换为范围没有帮助。
有哪些可能的解决方案?基本上,我需要在第二个工作表的前两列(包含参考资料)(名字、姓氏)和所有其他列(电子邮件)之间建立牢固的关系。请帮忙说明如何实现。谢谢。
答案1
假设:
- 来源是作为值的原始数据
- 电子邮件表使用公式复制源中选定的列
- 正在为电子邮件表中列出的每个人手动填充电子邮件列
要求:
源工作表上的排序、删除或插入也应该对相关电子邮件执行相同的操作
坏消息:
如果没有复杂的 VBA 宏代码,就无法实现如此紧密的关系。您尝试使用单元格引用链接两个单独的工作表/数据库,但两个工作表中都没有可用于在另一工作表中查找一个工作的硬编码唯一 ID。行号不是唯一的,因为它会在插入/删除/排序命令时发生变化。
解决方案 1:
保留一张包含所有源数据(包括电子邮件列)的工作表。使用“新窗户“ 或者克隆表创建同一数据的单独视图。
解决方案 2:
如果需要,请维护两个单独的工作表/数据库。为源工作表中的每一行创建一个唯一的 ID,例如 NameSurnameDate = JohnDoe20220328,或者如果不太可能出现重复名称,则只创建 NameSurname。“电子邮件”工作表将在一列中列出电子邮件列表,并将唯一 ID 作为文本(而不是引用)。您可以使用 VLOOKUP 从源工作表中提取全名和姓氏。手动同步两者,或编写 VBA 代码进行同步(在“源”中搜索新的唯一 ID 并复制到“电子邮件”,在“电子邮件”中搜索唯一 ID 并删除,然后按字母顺序排序)。