首页 > 解决方案 > excel公式为列中的值范围内的值赋予优先级

问题描述

这可能是一个简单的解决方法(尽管我认为这意味着它可能不是),所以如果这只是儿戏,我提前道歉。

在我正在处理的 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;和
  7. 如果列中的所有单元格都是空白的,则显示空白

对于规则 1-6,不应考虑列中的任何空白单元格。只有在所有单元格都为空白的情况下,即规则 7,才应考虑这一点。

我尝试过 IF 公式,但发现这些公式只考虑一个单元格。我试过到处搜索,但找不到任何东西(尽管这可能是因为我没有正确表达我的问题/搜索)。

任何帮助将非常感激。提前致谢!

标签: excelexcel-formulaexcel-2010excel-2007

解决方案


这是一个可能的解决方案。对于您的第 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";"")

将“D”替换为“P”、“L”、“C”,对测试 4 到 6 执行相同操作。

现在您的目标单元格:

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

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

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

编辑:很抱歉进行了多次编辑,我的办公室不是英文的,翻译公式很痛苦。他们现在应该工作了。

编辑 2:您的最后一个测试不是隐含的,最后一个单元格有可能显示“NA”。所以你应该把它添加到 D7 :

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

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


推荐阅读