Формула или VBA, которая находит повторяющиеся записи регистра в столбце, а затем определяет минимум в другом столбце по регистру - PullRequest
0 голосов
/ 25 мая 2020

Я не очень хорошо разбираюсь в VBA, поэтому использовал вспомогательные столбцы в начале своего объяснения. Если вы можете выполнять все операции в VBA, не стесняйтесь показать мне, как это сделать (если нет, переходите к следующему абзацу). Таким образом, в столбце BI есть номера случаев (например, 12345, 12346, и т.д. c.), Которые иногда повторяются (например, 12345, 12345). Когда есть повторение, мне нужны все те же номера дел, чтобы показать один и тот же статус дела, который соответствует тому, который является наименее продвинутым (данные в столбце D). Следовательно, первые 12345 могут быть «Планированием», а следующие 12345 - «Действиями». В столбце E мне нужно, чтобы они оба отображались в разделе «Планирование». Для этого я создал таблицу со связями (например, Таблица1), где «Планирование» будет равно 1, «Действие» - 2 и т. Д.

Таким образом, мой первый вспомогательный столбец имеет следующую формулу:

=IFERROR(IF(COUNTIF(B:B, B3)>1, VLOOKUP(D3, Table1, 2, False), D3), "")

Если номер дела не повторяется, он может сохранить свое исходное значение. Результаты дают мне что-то вроде этого:

enter image description here

Хотя мне нужно, чтобы он выглядел, по крайней мере, так:

enter image description here

Итак, я могу изменить его обратно на это:

enter image description here

Итак, как я могу определить минимум по номеру дела и применить этот минимум ко всем записям с повторяющимися номерами дел? Любая помощь приветствуется.

1 Ответ

0 голосов
/ 25 мая 2020

Нет необходимости в VBA.

Если я вас правильно понял, вы вводите число в столбце C, которое соответствует статусу.

Следующая формула вернет наименее расширенный статус для любых дубликатов: ( таблица, которую я назвал tblStatus)

=VLOOKUP(AGGREGATE(15,6,1/($B$1:$B$8=B1)*$C$1:$C$8,1),tblStatus,2,FALSE)

enter image description here

Изменить:

Если, как вы показываете в своем примере, у вас может быть номер статуса ИЛИ текст статуса в столбце C, тогда вам нужно преобразовать текст в число в чтобы использовать эквивалент функции MIN.

В этом случае попробуйте:

=VLOOKUP(AGGREGATE(15,6,1/($B$1:$B$8=B1)*IF(ISNUMBER($C$1:$C$8),$C$1:$C$8,MATCH($C$1:$C$8,tblStatus[Text],0)),1),tblStatus,2,FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...