测试列范围中是否缺少值

时间:2016-04-29 04:20:13

标签: excel

我需要编写一个if语句来测试列中缺少的值。

所以,

<script>
  

“MISSING”行中的值需要更新,以根据“FREQUENCY”行中的值显示上面列中没有的值。

我已经尝试过COUNTIFS和这里概述的REPT方法:r/excel: Never use nested ifs again!,但是当我尝试在实践中应用它时,这两个依赖的TRUE或FALSE检查似乎都会失败。

是否有更简单的方法来检查缺失值?也就是说,MISSING行中的公式检查FREQUENCY行中的值并显示上面列中不存在的值?

1 个答案:

答案 0 :(得分:0)

=TRIM(IF(ISNUMBER(FIND("F",B$8)),IF(SUMPRODUCT(--ISNUMBER(FIND("F",B$2:B$5)))=0,"F "," ")," ")&IF(ISNUMBER(FIND("I",B$8)),IF(SUMPRODUCT(--ISNUMBER(FIND("I",B$2:B$5)))=0,"I "," ")," ")&IF(ISNUMBER(FIND("L",B$8)),IF(SUMPRODUCT(--ISNUMBER(FIND("L",B$2:B$5)))=0,"L "," ")," "))

我试图获得在sumproduct内部工作的一封信的所有逻辑,但我的大脑今晚没有运作。相反,我做了一个nest if语句。然后我复制了那个巢2次,每增加一个字母一次。我通过放置&amp;在if语句之间。最后,如果有额外的空格可能导致找不到字母,我会将整件事放在修剪声明中。

所以这是你真正为每个字母重复一次的部分

=IF(ISNUMBER(FIND("F",B$8)),IF(SUMPRODUCT(--ISNUMBER(FIND("F",B$2:B$5)))=0,"F "," ")," ")

这部分是检查这封信是否实际被搜查。如果它在列表中找到它,它将返回一个数字,如果没有,则返回错误。这就是为什么它有ISNUMBER()。因此,如果它是一个数字,我们知道我们正在为此灼热。

ISNUMBER(FIND("F",B$8))

如果我们正在搜索这封信,我们会跳到下一部分,以确定该字母是否在上面的列中。每次找到一个,它总计加1。所以我们进行测试,看它是否找不到任何意味着总数为0的情况。

SUMPRODUCT(--ISNUMBER(FIND("F",B$2:B$5)))

你可以看到我们检查总数是否为0,如果是,我们将返回&#34; F&#34;后面有一个空格。这样就不会对下一封被发现的信件有所帮助。

因此,一旦您完成了该过程,只需重复下一个要检查的字母,然后将巢IF与&amp;它将字符串加在一起,以便&#34; F&#34;&amp;&#34; I&#34;成为&#34; F我&#34;。 trim函数删除多余的非打印字符,并在单词之间留出1个空格。

现在这将工作,可以跨行和列复制...只需要知道要用$锁定的单元格。我也相信你可以用一个if语句和sumproduct来做这一切,但我无法理解。

更新1

如果您可以在一周中的每一天将数据重新格式化为三列中的布局。您要测试的每个频率都有一列。见下图:

Potential layout

一个可能的方程式,可以避免if语句(根据你的链接帖子)放在B7中并复制到右边。

= REPT(B8,ISERROR(MATCH(B8,B2:B5,0)))

不确定这是否符合清洁方法。