Конкатенация заголовков столбцов, если значение в строках ниже не пустое

У меня есть таблица с данными в формате ниже.

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

Я хочу, чтобы в готовой таблице был заполнен пустой столбец, как показано ниже.

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

Поэтому мне нужна формула или VBA, которые возвратят и объединит заголовки непустых ячеек в каждой строке.

Используйте¹ в качестве формулы массива .

 =TEXTJOIN("-->", TRUE, IF(LEN(C3:I3), C$2:I$2, "")) 

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

Пред-Excel 2016 версии

Хотя вы можете просто скомпоновать ряд операторов IF, более простой альтернативой может быть запись пользовательской функции (иначе UDF).

В стандартном коду модуля модуля VBA:

 Function udf_Stitch_Together(r As Range, _ h As Range, _ Optional d As String = "-->", _ Optional blnks As Boolean = False) As String Dim s As String, c As Long For c = 1 To r.Cells.Count If CBool(Len(r.Cells(c).Text)) Then _ s = s & IIf(Len(s), d, vbNullString) & h.Cells(c).Text Next c udf_Stitch_Together = s End Function 

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


¹ TEXTJOIN был представлен с Excel 2016 в следующих версиях: Excel для телефонов Android, Excel Mobile, Excel 2016 с Office 365, Excel 2016 для Mac, Excel Online, Excel для iPad, Excel для iPhone и Excel для планшетов Android.

  • Как подсчитать количество строк в excel с данными?
  • Умный способ подключения нескольких изображений к макросу макроса - VAB Excel
  • Вырыв из цикла While ... Wend
  • Что делает ключевое слово Call в VB6?
  • Разбор даты и времени ISO8601 (включая TimeZone) в Excel
  • Lookbehind в regex для VBA?
  • Кнопка добавления / вычитания Excel VBA
  • Загрузите файл csv в массив VBA, а не в Excel Sheet
  • Outlook: применить правила к текущему сообщению?
  • Excel VBA Performance - 1 миллион строк - удаление строк, содержащих значение, менее чем за 1 минуту
  • Добавить пробел после n-й запятой в Excel, Notepad ++ или emEditor?
  • Давайте будем гением компьютера.