我有一个列表,我想根据另一个单元格值显示某些数据。我们称之为“单元格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)
让您了解如何解决此问题或如何优化条件公式?
PS:我是法国用户,所以我为自己糟糕的英语道歉!而且,我知道我需要使用“SI”代替“IF”:)感谢。
答案 0 :(得分:1)
我认为你可能会接受一种称为依赖数据验证的东西。
答案 1 :(得分:0)
正如我从您的示例中看到的,Val1 Val2 etc.
是重定向到特定工作表的关键。你可以编写"映射"这些" Vals"之间的数据和表单名称(可能在隐藏的工作表或任何可用/隐藏的列中),并使用INDIRECT
和VLOOKUP
的组合在验证公式中使用它。在这个例子中,我在工作表中使用列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列)。