Формулы CONCATENATE и TEXTJOIN / Excel / VBA

У меня снова проблемы. Вот сделка:

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

Я хотел бы использовать функцию TEXTJOIN для объединения всех элементов в диапазоне A: G, пропуская потенциально пустые ячейки. Проблема в том, что я должен следовать определенному порядку ... Это то, что указывает столбец H: ключ, где каждая буква представляет собой столбец

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

= CONCATENER ("="; "JOINDRE.TEXTE (" "-" "; VRAI;"; STXT (H2; 1; 1); LIGNE (H2); ";"; STXT (H2; 2; 1) ); LIGNE (H2); «;»; STXT (H2; 3; 1); LIGNE (H2); «;»; STXT (H2; 4; 1); LIGNE (H2); «;»; STXT (H2 ; 5; 1); LIGNE (H2); ";"; STXT (H2; 6; 1); LIGNE (H2); ";"; STXT (H2; 7; 1); LIGNE (H2); ")" )

(Я знаю, это выглядит так плохо, ха-ха)

А затем скопируйте и вставьте его в значения в другую ячейку, чтобы сделать трюк (= фактический результат формулы текстового соединения). К сожалению, эта идея не работает ...

Я также попытался использовать формулу без скобок вокруг моего разделителя в формуле textjoin, а затем заменить "-" на "-" "макросом, но, похоже, это тоже не работает ...

Есть подсказка?

Спасибо, ребята, и спасибо людям, которые уже помогли мне в этом сообщении: VBA - Подсчитайте пустые столбцы, найдите и замените

Жан


person Jeanjean    schedule 16.12.2016    source источник
comment
В столбце H всегда есть 7 имен столбцов? Если это так, вы можете использовать комбинацию INDIRECT с использованием в порядке MID для извлечения каждой части имени столбца и ROW для номера строки, а затем просто объединить все 5 частей с помощью &.   -  person nbayly    schedule 17.12.2016


Ответы (2)


Это функция Textjoin, которую вы ищете:

 =TEXTJOIN("-",TRUE,INDIRECT(MID(H2,1,1)&ROW(H2)),INDIRECT(MID(H2,2,1)&ROW(H2)),INDIRECT(MID(H2,3,1)&ROW(H2)),INDIRECT(MID(H2,4,1)&ROW(H2)),INDIRECT(MID(H2,5,1)&ROW(H2)),INDIRECT(MID(H2,6,1)&ROW(H2)),INDIRECT(MID(H2,7,1)&ROW(H2)))
person Mister 832    schedule 17.12.2016

Наряду с отличным ответом Mister 832, вот (возможное) альтернативное решение для тех, у кого нет функции Textjoin в Excel 2016.

=SUBSTITUTE(INDIRECT(MID(H2;1;1)&ROW(H2))&" "&INDIRECT(MID(H2;2;1)&ROW(H2))&" "&INDIRECT(MID(H2;3;1)&ROW(H2))&" "&INDIRECT(MID(H2;4;1)&ROW(H2))&" "&INDIRECT(MID(H2;5;1)&ROW(H2))&" "&INDIRECT(MID(H2;6;1)&ROW(H2))&" "&INDIRECT(MID(H2;7;1)&ROW(H2));"  ";" ")
person Vitor Barreto    schedule 17.12.2016