
Не уверен, возможно ли это в формуле или понадобится VBA, но у меня есть следующий набор данных:
Я хочу взять значения из A:F, проигнорировать все пустые ячейки и построить значение в ячейке G (включая возврат каретки после каждой пары)
Я попробовал текстовое соединение, и это дает мне часть пути, но оно объединяет все значения в одну строку. Как вы видите, они должны идти A => B B => C C => D
но игнорируйте пробелы.
Любая помощь приветствуется!
решение1
Использовать:
=TEXTJOIN(CHAR(10),TRUE,INDEX(FILTER(A1:F1,LEN(A1:F1)>0),SEQUENCE(COUNTA(FILTER(A1:F1,LEN(A1:F1)>0))-1,,1))&" => "&INDEX(FILTER(A1:F1,LEN(A1:F1)>0),SEQUENCE(COUNTA(FILTER(A1:F1,LEN(A1:F1)>0))-1,,2)))
Используя INDEX(FILTER(A1:F1,LEN(A1:F1)>0),SEQUENCE(COUNTA(FILTER(A1:F1,LEN(A1:F1)>0))-1,,1))
и , INDEX(FILTER(A1:F1,LEN(A1:F1)>0),SEQUENCE(COUNTA(FILTER(A1:F1,LEN(A1:F1)>0))-1,,2))
мы создаем два массива непустых ячеек: один, который начинается с первой и заканчивается предпоследней, и второй, который начинается со второй и заканчивается последней.
Затем мы объединяем " => "
и используем TEXJOIN для добавления переноса строки.
и скопируйте вниз.
решение2
Я бы решил это следующим образом:
Введите вспомогательную строку для каждой строки данных, генерирующей промежуточный результат: T1, T1, T5, T3, T6, T6 , T2, T2, T3l, T3, T7
Правило: «Если ячейка пуста, заполните предыдущую» A3: =A1 B3: =if(b1="";a1;b1)
В другой вспомогательной строке вы можете построить окончательное выражение кумулятивным способом, используя vbCrlf для переносов строк: Правило: «если содержимое ячейки изменяется, добавить еще одно подвыражение в формулу, если нет, повторить старую формулу» b4: =if(b3<>a3;a4 & vbcrlf & a3 & "=>" b3;a4) ...