2016-12-16 3 views
1

У меня возникают некоторые проблемы. Вот сделка:Формулы CONCATENATE и TEXTJOIN/Excel/VBA

enter image description here

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

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

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

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

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

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

Любые подсказки?

Спасибо, ребята, и благодаря госзакупкам, которые уже помогли мне в этом посте: VBA - Count empty cols, search and replace

Жан

+0

Вы столбец H всегда имеет 7 названий столбцов? Если это так, вы можете использовать комбинацию 'INDIRECT', используя для' MID' для извлечения каждой части имени столбца и 'ROW' для номера строки, а затем просто присоедините все 5 частей с помощью' & '. – nbayly

ответ

1

Это функция 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))) 
1

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

=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));" ";" ")