excel公式,将列中一系列值的优先级赋予一个值

时间:2018-10-31 10:24:20

标签: excel excel-formula excel-2010 excel-2007

这可能是一个简单的解决方法(尽管我认为这可能并非如此),因此,如果这仅仅是儿童游戏,我会提前道歉。

在我正在处理的Excel工作表中,我有一个范围(就本例而言为B1:B10),该范围可以包含5个变量之一(不包括空格)-OG,D,L,PP或C

我需要另一个单元格中的公式来检查所讨论的范围,并根据以下优先级根据以下规则输出值:

  1. 如果OG出现在列中的任何位置,则不管其他输入如何,都显示OG;
  2. 如果列中出现D和L和/或PP和/或C,则显示OG;
  3. 如果仅D出现在列中,则显示D;
  4. 如果只有PP出现在列中,则显示PP;
  5. 如果只有L出现在列中,则显示L;
  6. 如果仅C出现在列中,则显示C;否则,显示C。和
  7. 如果该列中的所有单元格均为空白,则显示空白

对于规则1-6,不应考虑该列内的任何空白单元格。仅在所有单元格都为空白(即规则7)的情况下。

我尝试了IF公式,但是发现这些公式仅考虑单个单元格。 我尝试在任何地方搜索,但找不到任何内容(尽管这可能是我无法正确表达我的问题/搜索结果的原因。)

任何帮助将不胜感激。预先感谢!

4 个答案:

答案 0 :(得分:0)

使用“ if”公式,但根据您的条件,使用“ MATCH”:例如,用于检查第一种情况:

=IF(MATCH("OG",$B$1:$B$10,0), "OG", "FALSE")

如果在任何单元格中,则上面的公式将放置“ OG”,否则为“ FALSE”。 以类似的方式,更改所有逻辑,但设置条件以使用match来查看它们是否存在于列中

答案 1 :(得分:0)

这是一个可能的解决方案。对于您的6个首次测试,您在一个单元格中键入了每个公式(我从D1到D6完成了此操作):

测试1(D1)

=IF(COUNTIF(B1:B10;"OG");"OG";"")

测试2(D2)

=IF(AND(COUNTIF(B1:B10;"D");OR(COUNTIF(B1:B10;"L");COUNTIF(B1:B10;"C");COUNTIF(B1:B10;"C";"")));"OG";"")

测试3(D3)

=IF(COUNTIF(B1:B10;"D")=DCOUNTA(B1:B10);"D";"")

对测试4至6进行相同的操作,将“ D”替换为“ P”,“ L”,“ C”。

现在您的目标单元格:

=IF(D7="empty";"";INDEX(D1:D7;MATCH(TRUE;INDEX((D1:D7<>"");0);0)))

最后一个单元格将仅显示测试单元格的第一个非空值。 最后一个测试是隐式的。

希望我的测试正确,如果不正确,请告诉我。

编辑:很抱歉进行大量编辑,我的Office不是英语,翻译公式很麻烦。他们应该现在正在工作。

编辑2:您的最后一个测试不是隐式的,并且最后一个单元格可能显示“ NA”。因此,您应该将其添加到D7中:

=IF(COUNT(B1:B10)=0;"empty";"*A value to show if all tests didn't pass*")

现在您的目标单元格的公式范围内也有D7。

答案 2 :(得分:0)

我觉得条件2有点令人困惑,您是说D是强制性的,其他(L,PP,C)是导致“ OG”的选项吗?

如果我们多次输入(L,PP,C)在范围内,结果应该是什么?应该是空白吗?

如果条件2中的D是强制性的,我想出了这个公式,并且如果只有“ OG”和“ D”以外的其他3个输入,则公式将返回空白。

公式:=IF(COUNTIF(B1:B10,"OG")>0,"OG",IF(AND(COUNTIF(B1:B10,"D")>0,SUM(COUNTIF(B1:B10,"D"),COUNTIF(B1:B10,"L"),COUNTIF(B1:B10,"PP"),COUNTIF(B1:B10,"C"))>1),"OG",IF(COUNTIF(B1:B10,"D")=COUNTA(B1:B10),"D",IF(COUNTIF(B1:B10,"L")=COUNTA(B1:B10),"L",IF(COUNTIF(B1:B10,"PP")=COUNTA(B1:B10),"PP",IF(COUNTIF(B1:B10,"C")=COUNTA(B1:B10),"C",""))))))

第一个条件:

First Condition:

条件2:

enter image description here

条件3:

enter image description here

条件4:

enter image description here

条件5:如果数组公式中没有“ OG”或“ D”,则返回空白。

enter image description here

答案 3 :(得分:0)

如果您对空单元格改变主意的一种方法:

条件1:

=IF(MATCH("OG",$B$1:$B$10,0),"OG","")

条件2:

=IF(AND(COUNTIF($B$1:$B$10,"L")>0,COUNTIF($B$1:$B$10,"L")>0,OR(COUNTIF($B$1:$B$10,"PP")>0,COUNTIF($B$1:$B$10,"C")>0)),"OG","")

条件3,行查看您的范围内有多少行。然后将行数与在相同范围内找到的字母(D)进行比较。

=IF(COUNTIF($B$1:$B$10,"D")=ROWS($B$1:$B$10),"OG","")

条件4:

=IF(COUNTIF($B$1:$B$10,"PP")=ROWS($B$1:$B$10),"OG","")

条件5:

=IF(COUNTIF($B$1:$B$10,"L")=ROWS($B$1:$B$10),"OG","")

条件6:

=IF(COUNTIF($B$1:$B$10,"C")=ROWS($B$1:$B$10),"OG","")

条件7:

=IF(COUNTIF($B$1:$B$10,"")=ROWS($B$1:$B$10),"OG","")

将它们全部加在一起:

=IF(MATCH("OG";$B$1:$B$10;0);"OG";
IF(AND(COUNTIF($B$1:$B$10;"L")>0;COUNTIF($B$1:$B$10;"L")>0;OR(COUNTIF($B$1:$B$10;"PP")>0;COUNTIF($B$1:$B$10;"C")>0));"OG";
IF(COUNTIF($B$1:$B$10;"D")=ROWS($B$1:$B$10);"OG";
IF(COUNTIF($B$1:$B$10;"PP")=ROWS($B$1:$B$10);"OG";
IF(COUNTIF($B$1:$B$10;"L")=ROWS($B$1:$B$10);"OG";
IF(COUNTIF($B$1:$B$10;"C")=ROWS($B$1:$B$10);"OG";
IF(COUNTIF($B$1:$B$10;"")=ROWS($B$1:$B$10);"OG";""
)))))))

enter image description here


如果您想考虑空单元格,则

COUNTA将不起作用 ... 查看以下两个公式:

  

行查看您的范围内有多少行。然后将行数与在相同范围内找到的字母(D)进行比较。

=IF(COUNTIF($B$1:$B$10,"L")=ROWS($B$1:$B$10),"OG","")

与此相比:

  

这里我们查看L在该范围内存在多少次(L的数量可以低于实际范围),不包括空单元格

因此,我们仍然在此图标上显示“ OG”。     = IF(COUNTIF($ B $ 1:$ B $ 10,“ L”)= COUNTA($ B $ 1:$ B $ 10),“ OG”,“”)

如下图所示,相同范围的结果是不同的! enter image description here