工作表之间的 Excel 数据验证

工作表之间的 Excel 数据验证

我在工作表 1 中有一个 ID 和说明的列表。然后,该数据用于用户可以与之交互的第二张工作表(工作表 2)。

第 1 页

第 2 页

Sheet 1 中的列表具有重复的 ID,但描述不同。我如何才能使用 Sheet 2 中的数据验证将 ID 号 4 的所有重复项合并为 1,但允许用户在 A 列中进行选择后选择他们想要的描述(使用下拉框)?

为此,我想远离宏 - 只使用内置函数。

任何帮助都将不胜感激!

答案1

合并 Sheet1 中的重复项。查找公式仅返回找到的第一个值,因此如果您有多个相同的 ID,则需要创建一个具有唯一 ID 的查找。如果您不想或无法更改原始表,请在辅助表中准备该表并使用辅助表进行数据验证。

标识符(这样称呼是有原因的)不是唯一的,这很容易引起误导。

答案2

您没有提到您使用的 Excel 版本。根据我对您问题的理解,我建议您采用一种可能的解决方案。但是,它还使用了名为 IFERROR 和 COUNTBLANK 的函数,我猜这些函数在 Excel 2007 之前不可用。因此,如果您使用的是 Excel 2003,则可能需要采用不同的方法。

这可能不是一个非常理想的解决方案,因为它使用辅助列和辅助表!

在此示例中,示例数据位于 Sheet1!A2:B10 中,如该屏幕截图所示。

首先,我们需要在 D 列中创建一个辅助列,以从您的 ID 中获取唯一列表。

在 D2 中输入以下公式,然后按公式栏中的CTRL+ SHIFT+ENTER创建数组公式。您还需要保留一行(最好是第一行)作为标题,以确保其正常工作。

公式应括在花括号中,以表明它是一个数组公式。

根据主列中唯一值的预期数量,将其向下拖动到预期行。最终它将开始在底部返回空白,然后您可以停止。这将创建一个唯一的 ID 主列表。

=IFERROR(INDEX($A$2:$A$10, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$10), 0)),"")

在此处输入图片描述

现在我们需要知道这个列表的确切开始和结束位置来填充验证列表。

现在在 G3 中输入以下公式。

=INDEX(Sheet1!D2:D10,1)

并在 G4 中输入以下数组公式。

=MIN(IF(Sheet1!D2:D10="",ROW(Sheet1!D2:D10),9^99))-2

不要忘记这个++ CTRLSHIFTENTER

现在转到名称管理器并创建一个名为 MyList 的新名称

将以下公式代入其中

=INDEX(Sheet1!$D$2:$D$10,Sheet1!$G$3):INDEX(Sheet1!$D$2:$D$10,Sheet1!$G$4)

这里我们使用 INDEX 返回单元格引用而不是值

在此处输入图片描述

插入一个名为 Sheet2 的新工作表。

现在在 A2 列及下方创建一个验证列表并将其放入=MyList其中。

现在,所有唯一值都显示在 ID 的第一个下拉列表中。 在此处输入图片描述

在此处输入图片描述

第 1 部分到此结束。

现在下一个任务是根据从描述列中提取的数据填充第二个验证列表。

插入第三个辅助表 Sheet3。您可以直接隐藏此表。

在此示例中,我已获取 Sheet3!B2:H10 中的数据。根据主列表中 ID 的最大重复数确定列数。同时保留第一列 A,以确保此操作正确。

在 B2 中输入以下公式,然后按公式栏中的CTRL+ SHIFT+ENTER创建数组公式。

按照预期将其向下拖动。

=IFERROR(INDEX(Sheet1!$B$2:$B$10, SMALL(IF(Sheet2!$A2=Sheet1!$A$2:$A$10,ROW(Sheet1!$A$2:$A$10)-1,999),COLUMN()-COLUMN($A$2))),"")

在此处输入图片描述 返回名称管理器,创建一个名为 Trimmed 的新名称,并在其中输入以下公式。

=OFFSET(Sheet3!$B1,0,0):OFFSET(Sheet3!$B1,0,COUNTA(Sheet3!$B1:$H1)-COUNTBLANK(Sheet3!$B1:$H1)-1)

这将生成一个不包括空白的列表,以便正确修剪列表。

在此处输入图片描述

现在在 Sheet2 中的单元格 B2 及以下创建一个验证列表并将其放入=Trimmed其中。 在此处输入图片描述

现在,当您的数据在 Sheet1!A2:A10 中发生变化时,唯一值列表会自动反映在 MyList 中,而且名称 Trimmed 只会从 Sheet1 说明列中获取所需的说明。

请参阅下面的屏幕截图至 GIF,了解整个过程是如何运作的。 在此处输入图片描述

相关内容