Excel:数据验证源

时间:2017-07-07 09:15:35

标签: excel excel-formula

我有一个列表,我想根据另一个单元格值显示某些数据。我们称之为“单元格A1”。

在我的逻辑中,“单元格A1”的每个值都表示不同的列表项。

问题是当我向“单元格A1”可能包含的可能数据中添加其他值时,公式变得非常长并且无法放入源字段中!

例如,如果“细胞A1”可能的值是Tigre,Dog,Cat,Lion,Horse,Sheep和Turkey,则条件为:

=IF(D4="Tigre";'Sheet1'!$B$2:$B$1000;IF(D4="Dog";'Sheet2'!$B$2:$B$1000;IF(D4="Cat";'Sheet3'!$B$2:$B$1000;IF(D4="Lion";'Sheet4'!$B$2:$B$1000; IF(D4=" Horse";'Sheet5'!$B$2:$B$1000;IF(D4="Sheep";'Sheet6'!$B$2:$B$1000;IF(D4=" Turkey";'Sheet7'!$B$2:$B$1000;IF(D4="Val8";'Sheet8'!$B$2:$B$1000;""))))))))))

Check this image, the source field is already full! (before the end of the condition) enter image description here

让您了解如何解决此问题或如何优化条件公式?

PS:我是法国用户,所以我为自己糟糕的英语道歉!而且,我知道我需要使用“SI”代替“IF”:)

感谢。

2 个答案:

答案 0 :(得分:1)

我认为你可能会接受一种称为依赖数据验证的东西。

在此处查看分步教程http://www.contextures.com/xlDataVal02.html

答案 1 :(得分:0)

正如我从您的示例中看到的,Val1 Val2 etc.是重定向到特定工作表的关键。你可以编写"映射"这些" Vals"之间的数据和表单名称(可能在隐藏的工作表或任何可用/隐藏的列中),并使用INDIRECTVLOOKUP的组合在验证公式中使用它。在这个例子中,我在工作表中使用列G:H"映射":

' Worksheet mapping
 G             H
Val 1       Sheet number 1
Value 2       Sheet2
Val3       My worksheet number 3

现在您的数据验证公式可以是这样的:

=INDIRECT("'"&VLOOKUP($D$4,mapping!$G$1:$H$3,2,0) &"'!$B2:$B1000")

P.S。然后,您可以为包含密钥的单元格mapping!G1:G3创建列$D$4数据验证列表。

我在这里也注意到,如果范围并不总是相同的(不像你的例子中它们都是B2:B1000),你也可以使映射"完成"通过在重定向列中包含范围(在我的示例中为H列)。