我有一本庞大而复杂的工作簿,重新计算需要几秒钟。我正在尝试根据其他单元格的内容来验证(例如)[J2]。
我在另一个单元AE2中有逻辑。
=OR(AD2="",IF(AND(AD2=AD1,G2 = G1, H2 = H1,J2 = "same items"), TRUE, IF(ISNUMBER(J2), ROUND(ABS(J2-1),0) = J2-1, FALSE)))
AE2根据需要显示TRUE或FALSE。
我正在使用AE2有条件地格式化J2,并且可以按我的要求工作。
理想情况下,为了简化理解和维护,我希望在J2上进行自定义验证以引用AE2;
错误提示样式:Stop
设置允许:Custom
公式:=AE2
。
这并不限制数据输入,您可以输入任何内容而不会显示任何消息。
我尝试将完整的公式输入到“设置公式”中。它仍然不限制数据输入,您可以输入任何内容而没有消息。
有任何提示吗?
编辑后添加:
J2中的有效条目取决于其他单元格。
AND(AD2 = AD1,G2 = G1, H2 = H1)
为TRUE,则文本值same items
也有效。编辑后添加:
如果AD1,AD2,G1,G2,H1,H2都不为空,则上面给出的公式将起作用。我开始认为自定义数据验证中的公式计算与工作表单元格中的计算有所不同。回到尝试
答案 0 :(得分:0)
好吧,我使用了数据验证的自定义版本,我得到了一些东西
我使用了这个公式:
`=IF(OR(AND(G2=G1;H2=H1;AD2=AD1;J2="same items");AND(J2>1;ISNUMBER(J2)=TRUE;IFERROR(INTEGER(J2)=J2;FALSE)))=TRUE;TRUE;FALSE)=TRUE`
我已经翻译了我的西班牙语版本的Excel,所以希望我没有犯任何错误,但是以防万一,请抓取一个屏幕截图,以确保您必须使用此公式。
我在J2
的数据验证框中输入了它
它对我有用:
如上图所示,小于2或非整数的值无效
案例2:发短信same items
,但仅当AND(AD2 = AD1,G2 = G1, H2 = H1)
如您所见,因为满足条件,所以接受文本值same items
如果不满足条件,则文本值same items
不能接受
在H2
上方的图片中不等于H1
,因此文本值same items
不被接受。
希望您可以使其适应您的需求。我从没想过只能使用Excel才能做到这一点,但是,是的!我学到新东西。
如果您要检出文件,我将文件上传到mi Gdrive。
https://drive.google.com/open?id=1-ssBJgCHV1nsc91XYRuQXFoIQh1AB7Ca
答案 1 :(得分:0)
一种略有不同的方法非常巧妙地工作。
首先,我对原来的问题进行了更正:当我说“整数> 1始终有效”时,我的意思是“整数> 0始终有效”,但这并没有实质性的改变。
1)“相同项目”的有效性
在备用列(AF)中,我输入了公式来评估“相同项目”是否为有效条目
= AND(AD2 = AD1, G2 = G1, H2 = H1)
。
这样做的次要优点是简化了AE2中的公式,现在变成了
=OR(AD2 = "", AND(AF2, J2 = "same items"), IFERROR(ROUND(ABS(J2-1),0) = J2-1, FALSE))
(感谢@FoxfireAndBurnsAndBurns提醒我有关IFERROR
的信息)
2)有效项列
在另一个备用列(AH)中,我列出了所有有效条目,包括文本“ same items”作为列表中的第一个值。这确实对有效整数设置了上限,但在我的情况下,这是数千个足够的数字(它是测试的项目数)。
3)命名有效项的范围
现在,我创建了一个命名范围作为公式。我发现命名范围的公式非常有用,并且我经常使用这种构造使范围自动调整为已用行的数量。
n_items =OFFSET($AH$1, 0,0, COUNTA($AH:$AH))
4)在目标单元格上进行列表验证
最后,我将对J2的验证设置为
允许:List
来源:=IF($AF2, n_items, OFFSET(n_items,1,0))
工作完成!次要优势是,用户可以(当有效时)通过下拉列表而不是键入来选择“相同项目”。
我仍然不了解我最初的尝试或@FoxfireAndBurnsAndBurns的行为,但是我已经找到了一种适用于我的解决方案,并且目前没有时间解决这个难题:-{>