摘要:
我希望提高/完全重写我为比较两个不同数据集而编写的公式的效率,其输出将根据第三个数据集而变化。这在一个语句中完成了 6 次。我目前的方法有效,但我毫不怀疑有更好的方法,但我不知道从哪里开始。
使用示例:
If A1="NO"
, I want to search my 6 datasets and find the first FALSE
result in C1
, F1
, I1
, L1
, O1
or R1
regardless of the content in cells D1
, F1
, J1
, M1
, P1
or S1
, then find找出 FALSE
所在的数据集。
如果 A1="YES"
,我想搜索我的 6 个数据集并在 FALSE
、 C1
、 F1
、 I1
、 L1
或 O1
中找到第一个 R1
结果,只要右侧相邻单元格的日期早于 2012 。
具有上述标准的示例表,在 FORMULAHERE
中具有正确的输出:
PRE2012
数据1
数据1无效?
数据1 日期
数据2
数据2无效?
数据2 日期
数据3
数据3无效?
数据3 日期
数据4
数据4无效?
Data4 日期
数据5
数据5无效?
数据5 日期
数据6
数据6无效?
数据6 日期
公式在这里
不
AAA
真的
2020 年 1 月 1 日
BBB
错误的
2018 年 1 月 1 日
CCC
真的
2015 年 1 月 1 日
DDD
真的
2013 年 1 月 1 日
电子电气设备
真的
2010 年 1 月 1 日
FFF
错误的
2009 年 1 月 1 日
“使用数据 2”
不
111
错误的
2020 年 1 月 1 日
222
错误的
2018 年 1 月 1 日
333
真的
2015 年 1 月 1 日
444
真的
2013 年 1 月 1 日
555
真的
2010 年 1 月 1 日
666
错误的
2009 年 1 月 1 日
“使用数据 1”
是的
美国广播公司
真的
2020 年 1 月 1 日
国防军
错误的
2018 年 1 月 1 日
全局健康指数
真的
2015 年 1 月 1 日
JKL
真的
2013 年 1 月 1 日
移动网络运营商
真的
2010 年 1 月 1 日
二维码
错误的
2009 年 1 月 1 日
“使用数据 6”
是的
123
真的
2020 年 1 月 1 日
456
错误的
2018 年 1 月 1 日
789
真的
2015 年 1 月 1 日
012
真的
2013 年 1 月 1 日
345
错误的
2010 年 1 月 1 日
678
错误的
2009 年 1 月 1 日
“使用数据 5”
当前解决方案:
目前,通过使用以下极其痛苦的 =IF
语句,我可以根据需要使用该功能:=IF(A1="Yes",(IF(AND(D1<DATE(2012,1,1),C1=FALSE),"Address 1",IF(A1="Yes",IF(AND(G1<DATE(2012,1,1),F1=FALSE),"Use Data 2",IF(A1="Yes",IF(AND(J1<DATE(2012,1,1),I1=FALSE),"Use Data 3",IF(A1="Yes",IF(AND(M1<DATE(2012,1,1),L1=FALSE),"Use Data 4",IF(A1="Yes",IF(AND(P1<DATE(2012,1,1),O1=FALSE),"Use Data 5",IF(A1="Yes",IF(AND(S1<DATE(2012,1,1),R1=FALSE),"Use Data 6",IF(A1="Yes",IF(R1=TRUE,"All Invalid",IF(A1="Yes",IF(AND(D1>DATE(2012,1,1),G1>DATE(2012,1,1),J1>DATE(2012,1,1),M1>DATE(2012,1,1),P1>DATE(2012,1,1),S1>DATE(2012,1,1)),"No Pre-2012 data on file","Review Manually")))))))))))))))),IF(A1="No",IF(C1=FALSE,"Address 1",IF(F1=FALSE,"Use Data 2",IF(I1=FALSE,"Use Data 3",IF(L1=FALSE,"Use Data 4",IF(O1=FALSE,"Use Data 5",IF(R1=FALSE,"Use Data 6",IF(R1=TRUE,"All Invalid","Review Manually.")))))))))
实现我想要实现的目标的最佳方法是什么?我希望学习,所以如果可能的话,任何进一步阅读以帮助我理解答案将不胜感激。谢谢!
使用 MSO365。谢谢!
最佳答案
包括 IFS()
怎么样?相对范围在 XLOOKUP()
:
=XLOOKUP(1,(C2:R2=FALSE)*(IFS(A2="NO",1,A2="YES",D2:S2<DATE(2012,1,1))),"Use "&B$1:Q$1,"",0)
请注意,您可以替换 ""
如果没有找到任何值,您想显示的任何值。这里的逻辑:
XLOOKUP()
可用于在值的范围/数组(第二个参数)中查找某个值(第一个参数),并将返回该完全相同的索引/位置(第三个参数)上的相对值。第 4 个参数如果未找到则返回该值,其中第 5 个参数是断言找到的值是完全匹配而不是近似值; TRUE
的 bool 结构。或 FALSE
值(或数字)。在 Excel 中,“(A=X)(B=Y)”结构将评估为“TRUETRUE”,因此进一步评估为“1”。在这种情况下,我们同时评估 (C2:R2=FALSE)
反对(IFS(A2="NO",1,A2="YES",D2:S2<DATE(2012,1,1)))
.换句话说,我们将尝试找到上述计算结果为“1”的第一个位置; ""
眼下; IFS()
似乎不言自明,但简而言之:如果“否”,则只需使用“1”,否则检查范围与 2012 年 1 月 1 日之前的日期。
关于arrays - 将 2 个数据集与 1 个单元格内的值进行 6 次比较的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71127836/