У меня есть список величин с описанием столбца. Он считает двери в зависимости от размера. Я хотел бы вывести список (желательно через запятую) номеров описания с соответствующими номерами. Вот пример того, что у меня есть:

 A | B   | C   | D   | E   | F   |

Apt| 2'0 | 2'6 | 3'0 | 4'0 | 5'0 |

44 | 0   | 1   | 0   | 1   | 1   |

47 | 0   | 1   | 0   | 0   | 2   |

48 | 0   | 1   | 1   | 1   | 1   |

50 | 1   | 0   | 0   | 1   | 1   |

Я пытаюсь получить его, чтобы сгенерировать список номеров квартир, сгруппированных по размеру, так что это будет выглядеть так:

2'0 | 50 (1)

2'6 | 44 (1), 47 (1), 48 (1)

3'0 | 48 (1)

4'0 | 44 (1), 48 (1), 50 (1)

5'0 | 44 (1), 47 (2), 48 (1), 50 (1)

Я попытался сделать функцию IF следующим образом:

=IF(B2:B5>0,A3:A5,)

но он возвращает только первое найденное значение. Какие-либо предложения?

2 ответа2

0

Мы можем обмануть это. Я вставил ваши данные в диапазон 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 затем группирует их все вместе и удаляет завершающую запятую + пробел


Очевидно, что это может или не может работать для вас в зависимости от размера вашего набора данных. Тем не менее, я предполагаю, что количество квартир и дверей не изменится в ближайшее время, так что это стоит того, чтобы обойтись.

0

Попробуйте использовать OFFSET() как в
=IF(B2:B5>0;A2:A5 &", "& OFFSET(A2:A5;0;1);)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .