формула объединяет непустые значения в одном и том же диапазоне строк для нескольких последовательных строк в Excel - PullRequest
0 голосов
/ 20 ноября 2019

Я ищу ответ на основе формулы, если это возможно. Я приведу конкретный пример, но, чтобы быть ясным, я собираюсь использовать это решение в более сложной обстановке (т.е. будет работать, если я добавлю больше листов).

предположим, что я в рабочей книгес четырьмя листами: [резюме], [a], [b], [c] в указанном порядке.

! $ A $ 2: $ A $ 6 каждого листа [a], [b], [c] заполнены формулами, которые либо выдают пустые значения (""), либо желаемую информацию (непустой текст). Если это поможет, то! $ A $ 1 каждого листа [a], [b], [c] подсчитывает, сколько из этих пяти ячеек непусто.

[a]!$A$2:$A$6 = "", "red", "truck", "", "train"
[a]!$A$1 = 3
[b]!$A$2:$A$6 = "", "", "", "ball", ""
[b]!$A$1 = 1
[c]!$A$2:$A$6 = "pterodactyl", "", "", "", "bills"
[c]!$A$1 = 2

на [summary]Я хочу использовать формулу или серию формул для создания в одном столбце без пустых значений всех непустых значений из указанного диапазона в [a], [b], [c]. порядок не важен для меня, но, например:

[summary]!$A$1:$A$6 = "red", "truck", "train", "ball", "pterodactyl", "bills"

как бы вы это сделали?

Ответы [ 2 ]

1 голос
/ 21 ноября 2019

Я взломал формулу Скотта и сделал ее немного более динамичной. Не уверен, что соответствует вашим потребностям, но здесь идет.

Таблица помощников

  • Каждый заголовок является именем рассматриваемого листа. Это необходимо для НЕПОСРЕДСТВЕННОГО
  • =IFERROR(INDEX(INDIRECT(A$1&"!A:A"),AGGREGATE(15,7,ROW(INDIRECT(A$1&"!$A$2:$A$6"))/(INDIRECT(A$1&"!$A$2:$A$6")<>""),ROW(1:1))),"")
  • После ввода формулы в R1C1 таблицы ее можно перетаскивать по

Вспомогательный столбец

  • {=INDEX(CHOOSE(N(IF({1},COLUMN(Table2[#Headers]))),Table2[a],Table2[b],Table2[c]), MOD(ROW(1:1)-1,ROWS(Table2))+1, MOD(ROW(1:1)-1,COLUMNS(Table2))+1)}
  • Вам нужно будет вручную настроить функцию CHOOSE, чтобы добавить больше столбцов таблицы
  • Это формула массива, перетащенная внизпока вы не достигнете ROWS (Таблица 2) * COLUMNS (Таблица 2)
  • Для простоты я превратил это в именованный диапазон под названием List1

Финальный столбец

  • {=IFERROR(INDEX(List1,AGGREGATE(15,7,ROW(List1)-1/(List1<>""),ROW(1:1))),"")}
  • Это формула массива, перетащенная вниз

enter image description here

0 голосов
/ 20 ноября 2019

Используйте INDEX AGGREGATE с IFERROR для перехода к следующей странице, когда список заканчивается.

=IFERROR(IFERROR(INDEX(a!A:A,AGGREGATE(15,7,ROW(a!$A$2:$A$6)/(a!$A$2:$A$6<>""),ROW(1:1))),INDEX(b!A:A,AGGREGATE(15,7,ROW(b!$A$2:$A$6)/(b!$A$2:$A$6<>""),ROW(1:1)-a!$A$1))),INDEX('c'!A:A,AGGREGATE(15,7,ROW('c'!$A$2:$A$6)/('c'!$A$2:$A$6<>""),ROW(1:1)-(a!$A$1+b!$A$1))))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...