#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))