Я пытаюсь использовать SPLIT
и JOIN
функции в Google Таблицах (новая версия) манипулировать некоторые данные, и я бегу в проблемы , потому что SPLIT
не сохраняя пустые записи.
Источник данных настроен так:
| A B C D
-----------------------
1 | q 5 r 2
2 | s t 4
3 | u 8 v
4 | w 3 x 6
(Пустые записи в этом наборе данных представляют «нет измерения», что отличается от измерения 0
)
По столбцам A
и C
я получаю желаемый результат, используя формулу:
=SPLIT(JOIN("~",A1:A4,C1:C4),"~")
Это создает строку, которая, как и ожидалось, идет в q
s
u
w
r
t
v
x
каждой ячейке.
Однако этот метод не работает на столбцах B
и D
. JOIN
функционирует как положено, давая вывод:
5~~8~3~2~4~~6
Выполнение SPLIT
этого вывода, однако, приводит к проблеме: я остаюсь 5
8
3
2
4
6
без пустых ячеек между 5
и 8
или между 4
и 6
, что означает, что пары разбиты (например, s
и v
должны соответствовать пустым ячейкам, но вместо этого w
и x
делать). Кажется, проблема в том, что SPLIT
интерпретируется ~~
как один разделитель, а не как два разделителя с нулевой записью между ними.
Кто-нибудь знает, как сохранить пустые записи в такого рода сценарии?
Желаемый результат будет выглядеть так
q s u w r t v x
5 8 3 2 4 6
источник
IF()
чтобы автоматически преобразовать пустые поля в пробелы.=ARRAYFORMULA(IF(ISBLANK(B1:B4)," ",B1:B4))
для создания фиктивного набора столбцов с "" в пустых ячейках, которые затем используются дляSPLIT
иJOIN
. Тем не менее, мы все еще надеемся, что у кого-то есть более элегантное решение: это добавляет кучу дополнительных вещей в мой документ, и мне все еще нужно, чтобы я обновлял номера строк в нескольких разных местах по мере добавления большего количества измерений в набор данных. (Спасибо AI E. за то, что я хотя бы позволил мне сейчасОтветы:
Попробуйте следующее решение.
формула
Разъяснения
Вы уже показали нам , что
SPLIT
функция игнорирует пустые ячейки, поэтому я выбираю эту строку в качестве разделителя:" ,"
. Промежуточный результатJOIN
функции выглядит так:Я выбираю разделитель для
SPLIT
функции будет следующим образом :","
. Промежуточный результатSPLIT
функции выглядит так:Однако теперь мы имеем дело с дополнительными пробелами. Поэтому я использовал
TRIM
функцию, чтобы удалить все конечные или начальные пробелы (в сочетании сARRAYFORMULA
). СравнитеLEN
значения каждого промежуточного результата.Результат
пример
Я создал файл примера для вас: SPLIT, чтобы сохранить пустые ячейки
источник
Попробуйте следующее решение.
Код
Применение
Добавьте в функцию столько диапазонов, сколько захотите, и они будут обработаны. Добавьте этот маленький скрипт в редактор скриптов вашей электронной таблицы (Инструменты> Редактор скриптов; нажмите кнопку Сохранить).
пример
Я создал файл примера для вас: SPLIT, чтобы сохранить пустые ячейки
источник
Короткий ответ
Следующая формула возвращает желаемый результат.
Расширенный ответ
Этот ответ сфокусирован на предоставлении способа получить желаемый результат, а не на обсуждении того, как заставить выбранный подход работать.
Проблема XY
ОП хочет получить X и думает, что Y должен вернуть этот результат. Этот подход проблематичен, потому что у Y есть некоторые оговорки. Это может быть проблемой мэра, так как ОП спрашивает о том, как заставить Y работать, вместо того, чтобы спрашивать, как получить X, но он не такой большой, потому что он предоставляет контекст и желаемый результат.
Решение
Google Sheets может обрабатывать многозначные результаты очень простым способом с точки зрения конечных пользователей. С другой стороны, это позволяет использовать специальные обозначения, позволяющие конечным пользователям определять массивы.
Вышеуказанные функции позволяют получить ожидаемый результат без использования функций SPLIT () и JOIN () и без присущих им предостережений.
Объяснение формулы
Это массив 2 × 8, созданный двумя массивами / диапазонами 2 × 4. Точка с запятой (
;
) используется в предположении, что десятичный разделитель электронной таблицы - точка (.
). Если десятичный разделитель был запятой, замените его обратной косой чертой (\
).Преобразует массив 2 X 8 в массив 8 X 2.
Одним из преимуществ этого метода является то, что он не требует специальной обработки пустых ячеек. Другие преимущества в том, что это очень компактная формула, и ее очень легко адаптировать.
Ссылки
источник
Если вы присоединитесь и сделаете разделитель «», то есть запятой с предыдущим пробелом, он автоматически сохранит это пространство, когда вы снова разделите его:
источник