基于LOOKUP的数据验证

时间:2014-12-05 09:54:44

标签: excel

我有两张桌子。表A和表B.

表A包含以下三列:" Attribut ID"," Attribut Name"和"价值"。 表A中的示例行(表示新列的逗号):

  • " 10000,长度,3M"
  • " 10000,长度,5M"
  • " 10000,长度,7M"
  • " 20000,Depth,1,5M"
  • " 20000,Depth,3M"
  • " 20000,Depth,4,5M"

表B包含以下三列:"产品编号"," Attribut ID"和"价值" 表B中的示例行(逗号表示新列):

  • " 38-500351,10000,3M"

客户端将使用工作表输入数据,因此我希望尽可能简化和验证所有内容,以最大限度地减少错误。目前客户投入了"价值"在表B中(在示例中为3M)手动。

我的目标是根据表A将其更改为基于下拉列表,或者至少进行验证。因此,如果将10000作为" Attribut ID"在表B中,只有" 3M"," 5M"和" 7M"可以作为价值观。

我发现这个topic似乎非常相似,但我一直无法弄清楚如何使用它。任何帮助将非常感激。如果可能,首选避免使用VBA。

我成功地调整了Axcel的答案。这是修改后的代码,使其适应我的工作表:

=INDEX('Attribut værdier'!$C:$C;MATCH(INDIRECT("RC[-2]";FALSE);'Attribut værdier'!$A:$A;0)):INDEX('Attribut værdier'!$C:$C;MATCH(INDIRECT("RC[-2]";FALSE);'Attribut værdier'!$A:$A;1))

我已经改变了#34;,"到";"和表格参考。除此之外,我没有做任何改变,一切正常。

1 个答案:

答案 0 :(得分:1)

假设我们遇到这样的情况: enter image description here

请注意,A列中的Attribut ID按升序排序。

使用引用

的名称管理器创建名为“ValueList”的名称
=INDEX(Sheet1!$C:$C,MATCH(INDIRECT("RC[-1]",FALSE),Sheet1!$A:$A,0)):INDEX(Sheet1!$C:$C,MATCH(INDIRECT("RC[-1]",FALSE),Sheet1!$A:$A,1))

如何使用名称管理器,请参阅https://support.office.com/en-us/article/Define-and-use-names-in-formulas-4d0f13ac-53b7-422e-afd2-abd7ff379c64?ui=en-US&rs=en-US&ad=US#bmmanage_names_by_using_the_name_manage

INDIRECT中的“RC [-1]”必须相应地更改Excel的语言版本。对于德语Excel,它必须是“ZS(-1)”。

此命名范围将动态获取C列中从“Attribut ID”首次出现到A列中此“Attribut ID”的最后一次出现的范围。“Attribut ID”取自左侧的单元格它所分配的单元格。

然后,您可以将此命名范围用作数据验证(Source = ValueList)中列表的源,以获取G列中的下拉列表。