Мы можем обмануть это. Я вставил ваши данные в диапазон A1:F5
. Ниже я создал таблицу, конечный результат которой выглядит следующим образом:
Door,Apts,44,47,48,50
2'0,50 (1),,,,50 (1),
2'6,44 (1), 47 (1), 48 (1),44 (1), ,47 (1), ,48 (1), ,
3'0,48 (1),,,48 (1), ,
4'0,44 (1), 48 (1), 50 (1),44 (1), ,,48 (1), ,50 (1),
5'0,44 (1), 47 (2), 48 (1), 50 (1),44 (1), ,47 (2), ,48 (1), ,50 (1),
Для поля « Door
я просто скопировал ваши размеры дверей и вставил транспонированный
Для имен полей (44,47,48,50) я сделал то же самое с вашими номерами меток
Для поля Apts
формула для первой строки выглядит следующим образом:
=LEFT(CONCATENATE(C11,D11,E11,F11),LEN(CONCATENATE(C11,D11,E11,F11))-2)
Все, что он делает, это собирает данные из полей справа
Для этих полей формула для первой ячейки выглядит следующим образом:
=IF(INDEX(OFFSET($A$2:$A$5,0,MATCH($A11,$1:$1,0)-1),MATCH(C$10,$A$2:$A$5,0))>0,C$10 & " (" &INDEX(OFFSET($A$2:$A$5,0,MATCH($A11,$1:$1,0)-1),MATCH(C$10,$A$2:$A$5,0)) & "), ","")
Это выглядит очень долго, потому что большой кусок повторяется. Этот кусок:
INDEX(OFFSET($A$2:$A$5,0,MATCH($A11,$1:$1,0)-1),MATCH(C$10,$A$2:$A$5,0))
Все, что он делает, это извлекает значение из таблицы в A1:F5
для этого конкретного размера двери и
Заменив этот кусок просто INDEX(...)
мы получим:
=IF(INDEX(...)>0,C$10 & " (" &INDEX(...) & "), ","")
Таким образом, он ищет значение и возвращает пустое значение, если оно равно нулю или что-то вроде 50 (1),
если это не так
Поле Apts
затем группирует их все вместе и удаляет завершающую запятую + пробел
Очевидно, что это может или не может работать для вас в зависимости от размера вашего набора данных. Тем не менее, я предполагаю, что количество квартир и дверей не изменится в ближайшее время, так что это стоит того, чтобы обойтись.