Удалить только последовательные пробелы из вывода VSTACK

Я часто использую столбцы VSTACK и удаляю пустые результаты с помощью FILTER следующим образом:

FILTER(VSTACK(<filtered_column_1>;<filtered_column_2>);
VSTACK(<filtered_column_1>;<filtered_column_2>)<>0)

Но я столкнулся со случаем, когда мне действительно хотелось сохранить непоследовательные пробелы.

Нефильтрованный вывод VSTACK:

1
2
<blank>
<blank>
<blank>
2
2
3
<blank>
3

Желаемый отфильтрованный вывод VSTACK:

1
2
<blank>
2
2
3
<blank>
3

Технически должно быть легко сравнить каждое значение с предыдущим, но моя проблема в том, что я не знаю, как ссылаться на выходные столбцы VSTACK для сравнения в аргументе FILTER "include", особенно учитывая столбцы, которые я подаю в качестве аргументов. в VSTACK — это не столбцы, на которые можно ссылаться, а скорее сами отфильтрованные столбцы.

FILTER(VSTACK(<filtered_column_1>;<filtered_column_2>);
<what do I do here in the "include" argument?>)

Есть идеи?

Тогда первый и последний <Blank> должны оставаться на выходе. Они не последовательные.

Harun24hr 09.08.2024 10:54

Да, я могу удалить их с помощью других формул. Я удалю это для ясности.

HigoChumbo 09.08.2024 11:00

Попробуйте мой ответ, пожалуйста.

Harun24hr 09.08.2024 11:08

Вы можете сделать что-то вроде: =LET(d;VSTACK(<filtered_column_1>;<filtered_column_2>);crit;‌​VSTACK(TAKE(d;1)<>""‌​;(DROP(d;1)<>"")+(DR‌​OP(d;-1)<>""));FILTE‌​R(d;crit))

Rory 09.08.2024 11:17
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
3
4
69
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Попробуйте следующую формулу:

=LET(x,VSTACK("",1,2,"","","",2,2,3,""),
z,MAP(SEQUENCE(ROWS(x)),LAMBDA(y,IF(AND(INDEX(x,y) = "",INDEX(x,y-1) = ""),FALSE,TRUE))),
FILTER(x,z))

Замените VSTACK("",1,2,"","","",2,2,3,"") на свою формулу VSTACK().

Работает! Спасибо! Даже не знал, что в Excel есть функция MAP. Кажется, он работает только для выходных данных VSTACK с одним столбцом, но я адаптирую его оттуда. Спасибо!

HigoChumbo 09.08.2024 11:39

Удалить последовательные пробелы из столбца

  • Нечто подобное предложил Рори в своих комментариях.
=LET(fc,A2:A11,sc,C2:C11,
    st,VSTACK(fc,sc),
    d,IF(st = "","",st),
    dn,d = "",
    ds,VSTACK(FALSE,DROP(dn,-1)),
    r,FILTER(d,dn*ds=0),
    r)

  • Если вам не нужен шаг d (чтобы пробелы не отображались как нули), вставьте формулу st в d и удалите st.

  • Замените самую нижнюю r любой другой переменной, чтобы увидеть, что она содержит.

  • Вы можете создать функцию Lambda в диспетчере имен, например. RemoveCB по следующей формуле:

    =LAMBDA(array,LET(dn,array = "",FILTER(array,dn*VSTACK(FALSE,DROP(dn,-1))=0)))
    
  • Затем вы можете использовать его в своем сложенном столбце, например. H2# (на скриншоте) по следующей формуле:

    =RemoveCB(H2#)
    

Что-то вроде:

=FILTER(<arr>,SCAN(0,<arr> = "",LAMBDA(x,y,(x+y)*y))<2)

Складывание ради удовольствия, аналогично логике JvdV,

=LET(
    data, A1:B10,
    stacked, VSTACK(INDEX(data, , 1), INDEX(data, , 2)),
    filtered, FILTER(
        stacked,
        LEN(TRIM(stacked & VSTACK(DROP(stacked, 1), "")))
    ),
    IF(LEN(filtered), filtered, "")
)

Другие вопросы по теме