Excel с условной логикой, чтобы найти последнюю строку, содержащую ‘X’

#excel #excel-formula #vba

#excel #excel-формула #vba

Вопрос:

Я даже не знаю, возможно ли это в Excel или нет. Мне нужен способ связать последующие строки с предыдущими строками (дочерние элементы с родительскими).

Например, строка 2 содержит родительскую информацию, обозначенную символом ‘M’ в столбце E.

Если у родительского элемента есть 3 дочерних элемента, строки 3,4,5, они будут содержать ‘S’ или ‘D’ в столбце E.

Если есть ‘S’ или ‘D’, мне нужно выполнить поиск в последней строке с ‘M’, а затем получить значение из столбца B в этой строке (которое является уникальным идентификатором для родительского элемента) и вставить его в столбец в строках 3,4 и 5, чтобысоздайте связь между 3 дочерними элементами и одним родительским элементом. Будут случаи, когда у любого количества дочерних элементов нет дочерних элементов, и до сих пор мы были уверены, что следующая строка «вверх» всегда будет родительской для последующих дочерних строк.

Пример данных

Итак, в приведенном выше, поскольку E3 и E4 являются общими (дочерними) для строки 2, мне нужно взять B2 (UID) и поместить его в F3 и F4. Поскольку следующая строка является M (родительской), F5 пуст. Строка 6 является дочерним элементом строки 5, поэтому возьмите B5 и скопируйте его в F6.

Столбец B представляет собой формулу из первых 3 букв имени и dob в формате ГГГГММДД и не является необходимым (но будет сохранен) для дочерних строк. Надеюсь, это прояснит!

Комментарии:

1. Не могли бы вы создать пример — несколько строк с входными данными и ожидаемым результатом / результатом?

2. Я обновил вопрос изображением и объяснением

3. Глупый вопрос — но у вас есть «сын» с полом «F» и «дочь» с полом «M» … это преднамеренно? Должен ли я даже не смотреть на столбец H?

4. Пол также может быть для родителя. Хотите верьте, хотите нет, это данные страховой компании, и они отслеживают «M» для участника, а затем S и D для детей.

5. Не фактические данные. Опечатка с моей стороны, все D должны быть F гендеров.

Ответ №1:

Вот решение, которое, похоже, работает: будет записана следующая формула E4 (вводится как формула массива, т. Е. ctrl-shift-enter на ПК или cmd-shift-enter на Mac), затем скопирована по мере необходимости. Над ней должно быть достаточно места (потому что вы смотрите «до трех над этой строкой», это должна быть допустимая строка).

 =IF(NOT(E4="M"),INDEX(B$1:B3,MAX((E1:E3="M")*ROW(E1:E3)))," ")
 

Объяснение:

 =IF(NOT(E4="M")    - check that this is not a "parent" (i.e. we need to do a lookup)
MAX((E1:E3="M")*ROW(E1:E3)))  - see what cell has an M. the (E1:E3) produces 0 or 1
                              - multiply by the row number and you get an array of 0 or row number
                              - the MAX of this is the last row number with an M
INDEX(B$1:B3, number)         - find the corresponding value in column B
                              - note the $ sign since the ROW is absolute row
" "                           - empty space when there IF is false (i.e. this is a parent)
 

Вот как это выглядело для меня:

введите описание изображения здесь

Ответ №2:

Может быть более простой способ, но… =IF(F12="",IF(E13<>"M",B12,""),IF(E13="M","",F12)) похоже на работу.

введите описание изображения здесь

Ответ №3:

Я склонен решать подобные ситуации с помощью дополнительного столбца. В столбце B указан ваш идентификатор, а в столбце E — классификация. Допустим, столбец I (который может быть скрыт, если отображение бесполезно) имеет идентификатор самого последнего родительского элемента. Предположим, мы начинаем со строки 2 (сейчас вы поймете, почему). Если E2 имеет «M», то нам нужен идентификатор (B2); если это не так, мы хотим распространить значение из предыдущей строки. Это формула, которая делает это:

 =IF(E2="M", B2, I1)
 

Затем в столбце F, вашем столбце «Ссылка на», используйте эту формулу:

 =IF(E2="M", "", I2)
 

Заполните, и это все, что вам нужно.

Обновлено, чтобы соответствовать недавно опубликованному изображению

Комментарии:

1. Я добавил изображение с некоторыми примерами данных, которые могут прояснить ситуацию.

2. Для столбца I «имеет идентификатор самого последнего родителя», как это заполняется?

3. Это первая формула. Просто заполните столбец I.

Ответ №4:

Используя предоставленные вами примеры данных, используйте эту формулу в ячейке F2 и скопируйте:

 =IF(E2="M","",LOOKUP(2,1/(E$2:E2="M"),B$2:B2))