
例如,将列表数据验证应用于第二列:
车辆 | 模型 |
---|---|
车 | |
自行车 | |
车 |
我想做这样的公式,但它出错了:
=IF($A:$A=“car”, CarTable, BikeTable)
错误信息是:
“源目前评估为错误。”
如果我单击继续,会出现一个下拉按钮,但其中没有任何内容。
如果我把它放在A2:A4
那里A:A
它会起作用,但我需要将它应用到实际的列中以便列中的所有单元格都具有数据验证(当最终输入新的新项目时)。
我该怎么做?
答案1
假设您希望A
根据列中单元格的值来格式化列A
,则可以使用以下条件:
=A2="car"
并将其应用于A:A
如果您想要根据列中的值格式化多列A
,则需要使用绝对引用:
=$A2="car"
并将其应用于所需范围(例如A:C
:)
答案2
有一件事肯定是个问题:你的参考范围似乎不正确。就是这个:$A:$A
。它试图评估整个列并判断它是否等于"car"
。
尝试使用$A2
(假设您范围内的第一个单元格是B2
)或(取决于您的 Excel 版本)。@$A:$A
这两种方法都将返回单个单元格。第一种情况($A2
)将使用验证更新范围内每个单元格引用的行,但由于,列将保持绝对值$
。第二种情况(@$A:$A
)基本相同,因为它返回A
与我们正在评估的单元格位于同一行的列中的单元格。在您的例子中,这两个方法的工作方式相同,因为列中的数据B
与列中的数据位于同一行A
。
问题也可能在于CarTable
或BikeTable
不止一列。如果是这种情况,请将命名范围调整为单列。
也可能CarTable
是实际的表格。在这种情况下,您可以添加要包装整个内容的列的名称,INDIRECT()
如下所示:
Indirect("CarTable[Model]")