Конкатенация клеток на основе условия - PullRequest
0 голосов
/ 25 октября 2019

Я ищу следующее: у меня есть столбцы с именами деталей, которые составляют конкретный продукт, где я сообщаю, если детали неисправны или нет. Когда деталь в порядке, информация по умолчанию установлена ​​на «#». Все дефекты имеют величину амортизации от 0 до 10.

Я хочу объединить в одной ячейке все дефекты, которые амортизируют продукт. В другой ячейке дефекты, которые не обесцениваются. Вот тестовый лист:

enter image description here

https://docs.google.com/spreadsheets/d/1HX2eko7v15mDja6_KlajmUaHkY4SCmKfELvPxqgnDUA/edit#gid=0

На самом деле я получил решение, однако есть 18 столбцов и формулабудет очень большим. Может ли кто-нибудь придумать более разумное решение? Вот мой текущий сценарий:

=IFERROR(CONCATENATE(LEFT(CONCATENATE(IF(A2<>"#";IF(VLOOKUP(A2;$H$2:$I$5;2;FALSE)<>0;A2&", ";"");"");IF(B2<>"#";IF(VLOOKUP(B2;$H$2:$I$5;2;FALSE)<>0;B2&", ";"");"");IF(C2<>"#";IF(VLOOKUP(C2;$H$2:$I$5;2;FALSE)<>0;C2&", ";"");"");IF(D2<>"#";IF(VLOOKUP(D2;$H$2:$I$5;2;FALSE)<>0;D2&", ";"");""));LEN(CONCATENATE(IF(A2<>"#";IF(VLOOKUP(A2;$H$2:$I$5;2;FALSE)<>0;A2&", ";"");"");IF(B2<>"#";IF(VLOOKUP(B2;$H$2:$I$5;2;FALSE)<>0;B2&", ";"");"");IF(C2<>"#";IF(VLOOKUP(C2;$H$2:$I$5;2;FALSE)<>0;C2&", ";"");"");IF(D2<>"#";IF(VLOOKUP(D2;$H$2:$I$5;2;FALSE)<>0;D2&", ";"");"")))-2);".");"OK")

и

=IFERROR(CONCATENATE(LEFT(CONCATENATE(IF(A2<>"#";IF(VLOOKUP(A2;$H$2:$I$5;2;FALSE)=0;A2&", ";"");"");IF(B2<>"#";IF(VLOOKUP(B2;$H$2:$I$5;2;FALSE)=0;B2&", ";"");"");IF(C2<>"#";IF(VLOOKUP(C2;$H$2:$I$5;2;FALSE)=0;C2&", ";"");"");IF(D2<>"#";IF(VLOOKUP(D2;$H$2:$I$5;2;FALSE)=0;D2&", ";"");""));LEN(CONCATENATE(IF(A2<>"#";IF(VLOOKUP(A2;$H$2:$I$5;2;FALSE)=0;A2&", ";"");"");IF(B2<>"#";IF(VLOOKUP(B2;$H$2:$I$5;2;FALSE)=0;B2&", ";"");"");IF(C2<>"#";IF(VLOOKUP(C2;$H$2:$I$5;2;FALSE)=0;C2&", ";"");"");IF(D2<>"#";IF(VLOOKUP(D2;$H$2:$I$5;2;FALSE)=0;D2&", ";"");"")))-2);".");"OK")

1 Ответ

0 голосов
/ 25 октября 2019

паста в D2 :

=ARRAYFORMULA(REGEXREPLACE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(
 IF((A2:D<>"")*(A2:D<>"#"); A2:D&","; ));;999^99))); ",$"; "."))

0


паста в E2 :

=ARRAYFORMULA(IF(B2:B<>""; IF(B2:B="#"; "OK" ; B2:B)&"."; ))

0

демонстрация электронной таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...