有没有办法通过匹配列来从另一个电子表格复制和粘贴列?

有没有办法通过匹配列来从另一个电子表格复制和粘贴列?

我有两个电子表格,一个(电子表格 A)包含名字、姓氏、出生日期、电子邮件、电话号码和其他列。我还有另一个电子表格(电子表格 B),它可以以任何顺序包含这些列的任意组合。我希望匹配电子表格 B 中的所有列并将其直接复制到电子表格 A 中。

例如,

假设我的电子表格 B 包含“名字”、“电子邮件”和“出生日期”列。我想复制这些列中的信息,然后粘贴并让它们自动按照电子表格 A 中的顺序重新排序。我知道您可以按特定顺序分别选择每一列并粘贴,但我想知道是否有其他方法可以实现这一点,即通过匹配两个电子表格中的列。

提前致谢!

答案1

是的,你可以这样做。在第二个电子表格中,除了标题外,其余列均为空白,在第二个电子表格的每一列中使用以下公式:

=INDEX($A$2:$E$7, 0,  COLUMN(XLOOKUP(G1, $A$1:$E$1, $A$1:$E$1) ) )

它假设第一个电子表格在第 1 行有标题,电子表格 2 的所有列都有相同的标题(顺序不限),并且第一个电子表格的数据位于从第 2 行开始的 A:E 列中。

由于我编写它不是为了在电子表格之间切换,而是为了清晰起见,因此您不会看到完整的多电子表格寻址,而只是单元格和范围寻址。只需编辑它以获取正确的地址和范围信息即可。它还假设电子表格 2 中的标题位于第 1 行,并从 G 列开始。如果真是这样,那将是令人难以置信的巧合!因此,将“G1”引用编辑为第一列的标题。

将公式放在第一列并编辑地址。请注意,范围的每个地址都是完全绝对的: $地址的每个部分之前都有 。例如,$A$2:$E$7... 前半部分有一列和一行的值,后半部分相同,所以有四个$。这非常重要。关于所选范围的另一件事也很重要,但稍后会详细介绍。

该公式的作用是XLOOKUP()获取第二个电子表格的列标题并在第一个电子表格的标题行中查找。有人认为第一个电子表格中的数据从 A 列开始,但这可能是错误的。可能是任何旧列。也可能是不同的行。行是一个简单的编辑,但确切的列...这就是另一个重要的事情发挥作用的地方。

假设是 A:G 列。因此,公式将根据匹配的列返回 1、2、...7。很简单,不是吗?但是,如果数据从 R 列开始并向右延伸,结果会怎样?那么它将返回相同的结果,只不过现在您必须调整值,因为它不是从第 1 列开始,而是从第 18 列开始。如果添加或删除了范围外的列(例如删除了 F 列),那么这将非常麻烦,而且难以维护。

但是,如果您没有从 R 列(例如 R1:X1)开始范围,而是从 A 列开始,则查找 R 列标题的查找将报告 18,而不是 1。因此无需调整。当然,标题文本不能出现在任何额外的单元格中,但这通常不是问题。因此,它可以简化您的任务,并在一年后需要调整时理解它。

因此,在最后编辑两个范围时 -注意它们是相同的,所以要确保它们最终是相同的— 从 A 列开始,即使它完全超出了信息的范围,并继续到数据所在的最右边,事实上,继续十几列或两列。如果它们被使用,则无需编辑!很简单。如果它们从未这样做过,它们也永远不会有与第二个电子表格中的标题匹配的文本,事实上,即使它们偶然这样做了,查找也会找到第一个存在的文本,因此永远不会注意到未使用区域中的第二个文本。

无论如何,它XLOOKUP()会查看标题中所在列的文本。它会获取该文本并转到第一个电子表格,在标题行中查找相同的文本,找到后,COLUMN()找出它所在的列号。

该列号向外传递给INDEX()函数。该函数最多接受四个参数,但这里只有前三个参数有用:

  1. 返回数据的范围。这是第一个电子表格中的整个数据范围。假设它是 A2:E7,就像公式中那样。如果您没有在中使用额外的列XLOOKUP(),则使用 A2:E7。如果您在规划未来的部分添加了六列,那么请使这六列更宽,因此 A:E 和另外六列:A:K,因此本例中为 A2:K7。XLOOKUP()这些列同样没有不良影响,因此请将您现在所做的与您在查找中所做的相匹配。否则,某一天您可能会遇到一个令人困惑的问题需要排除!请务必记住左侧。如果数据从 R 列开始,仍然使用 A 列作为数据的起始列。这样,标题列的编号就是正确的。

如果您的电子表格匹配得更紧密,至少更具体,那么您就不会从 A 列开始查找。但实际上,在两个电子表格中,事物所在的位置非常自由,这让我想到了这个更通用的解决方案。如果您对事物有更多规律,您可以在这里略过我的一些概括。

  1. 您想要的行。由于您没有做任何特别的事情来选择列(信不信由你,像您这样直接查找并没有什么“特别”的),您可以在这里使用一个简单的“0”来让 Excel 知道您想要所有的行。如果您做了一些特别的事情,您就必须做一点点事情来明确地向 Excel 解释您想要所有的行。您实际上可以根本不输入任何内容,所以那里会有两个逗号(,,)而不是,0,您看到的。很多人觉得这样做很刺激,但我喜欢在那里放一些东西,因为偶尔它可以避免以后编辑时出现奇怪的错误,但主要是因为它更容易发现和看到从创建一年后发生的事情。

  2. 您的查找将进入第三个参数:它在第一个电子表格中找到与第二个电子表格中的标题相匹配的标题,并计算其列号。这就是您在此处需要的确切列。

您可以继续使用上述方法做其他事情,例如,您可能想告诉 Excel 要使用哪个列。这很容易做到,但您强调了列对应的自由格式特性,所以我将其设置为让 Excel 完成这项工作。

无论如何,结果都会SPILL出现在第二张电子表格的列中。将公式复制到右侧,只要有标题,这些列也会填满。

如果该列在第一个电子表格中被移动,这没有关系,因为查找仍然会找到该列并将其正确的列号返回给INDEX()

我只是没时间做这个,所以我没有机会解决所涉及的怪异之处,以便使公式SPILL既向右又向下。显然,在查找中使用 G1:J1 而不是单个单元格会产生困难。也许其他人会为你添加这个细节。

相关内容