Формула Excel, чтобы дать приоритет значению из диапазона значений в столбце - PullRequest
0 голосов
/ 31 октября 2018

Это, вероятно, простое исправление (хотя я так думаю, значит, вероятно, нет), поэтому заранее прошу прощения, если это просто детская игра.

В листе 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, но обнаружил, что они учитывают только одну ячейку. Я пытался искать везде и ничего не могу найти по этому поводу (хотя, возможно, это из-за того, что я неправильно сформулировал свой вопрос / поиск).

Любая помощь будет высоко ценится. Заранее спасибо!

Ответы [ 4 ]

0 голосов
/ 31 октября 2018

Один подход, если вы передумаете о пустых клетках:

Критерии1:

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

Criteria2:

=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","")

Criteria3, Строки смотрят сколько у вас строк в вашем диапазоне. Затем сравните количество строк с количеством букв (D), которое он найдет в том же диапазоне.

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

Criteria4:

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

Criteria5:

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

Criteria6:

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

Criteria7:

=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" на этом. = ЕСЛИ (СЧЕТЕСЛИ ($ B $ 1: $ B $ 10, "л") = СЧЕТЗ ($ B $ 1: $ B $ 10), "О.Г.", "") * +1051 *

Как вы можете видеть на картинке ниже, результат отличается для того же диапазона! enter image description here

0 голосов
/ 31 октября 2018

Вот возможное решение. Для ваших первых 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)))

Эта последняя ячейка просто покажет первое непустое значение ваших тестовых ячеек. Последний тест является неявным.

Надеюсь, я правильно выполнил ваши тесты, дайте мне знать, если нет.

РЕДАКТИРОВАТЬ: Извините за многочисленные изменения, мой офис не на английском языке, это тяжело переводить формулы. Они должны работать сейчас.

РЕДАКТИРОВАТЬ 2: Ваш последний тест не является неявным, и есть вероятность, что последняя ячейка показывает "NA". Поэтому вы должны добавить это к D7:

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

Также теперь ваша целевая клетка имеет D7 в диапазоне формулы.

0 голосов
/ 31 октября 2018

Я чувствую, что условие 2 немного сбивает с толку. Вы имеете в виду, что D является обязательным, а другие (L, PP, C) являются опцией для результата "OG"?

Каким должен быть результат, если у нас есть несколько входов (L, PP, C) в диапазоне? Должно ли оно быть пустым?

Я придумал эту формулу, если D является обязательным в условии 2, и формула вернет значение Blank, если есть только 3 других входа, кроме "OG" и "D"

Формула: =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

0 голосов
/ 31 октября 2018

Используйте формулу 'if', но для вашего условия используйте 'MATCH': например, для проверки первого случая:

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

Приведенная выше формула поместит «OG», если оно находится в любой из ячеек, иначе «FALSE». Аналогичным образом измените всю логику, но установите условия для использования соответствия, чтобы увидеть, существуют ли они где-нибудь в столбце

...