Вы не можете выйти из данных на месте с помощью формул (упомянутых в комментариях), но если вам нужна копия данных, которая автоматически удаляет элементы, обновляет таблицу всякий раз, когда исходная таблица изменяется, вы можете это сделать. Я прикреплю данные результата под входными данными, но вы можете прикрепить их на другой лист, если хотите...
Начнем с этого:
| A | B | C | D | E | F | G |
---+-------+-------+-------+-------+-------+-------+-------+--
1 | si id a b c d e
2 | 1 123 abc bcd abc def efg
3 | 2 234 bcd cde def efg fgh
4 | 3 345 cde efg efg abc ghi
5 |
6 |
7 |
8 |
9 |
10 |
Шаг 1: в A6 поставьте =A1
Шаг 2. Скопируйте A6 в B6:G6, A7:A10 и B7:B10.
Теперь лист выглядит так:
| A | B | C | D | E | F | G |
---+-------+-------+-------+-------+-------+-------+-------+--
1 | si id a b c d e
2 | 1 123 abc bcd abc def efg
3 | 2 234 bcd cde def efg fgh
4 | 3 345 cde efg efg abc ghi
5 |
6 | si id a b c d e
7 | 1 123
8 | 2 234
9 | 3 345
10 |
Шаг 3: В C7 введите эту формулу массива (не забудьте нажать Alt-Shift-Enter вместо простого нажатия Enter):
=IFERROR(INDEX($C2:$G2,1,SMALL(IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2),COLUMN(A1))),"")
Шаг 4: скопируйте C7 в D7:G7 и C8:G9
Теперь лист выглядит так:
| A | B | C | D | E | F | G |
---+-------+-------+-------+-------+-------+-------+-------+--
1 | si id a b c d e
2 | 1 123 abc bcd abc def efg
3 | 2 234 bcd cde def efg fgh
4 | 3 345 cde efg efg abc ghi
5 |
6 | si id a b c d e
7 | 1 123 bcd def efg
8 | 2 234 bcd cde def efg fgh
9 | 3 345 cde efg efg ghi
10 |
Как это работает:
=IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2)
генерирует массив значений с числом, если значение не равно abc, и значением FALSE, если значение равно abc. -2
важен, потому что слева от данных есть два столбца заголовков.
=SMALL(IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2),COLUMN(A1))
возвращает n-е наименьшее число в возвращенном массиве — он пропускает все значения FALSE.
=INDEX($C2:$G2,1,SMALL(IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2),COLUMN(A1)))
возвращает значение местоположения этого n-го наименьшего числа - если там нет значения из-за отфильтрованных элементов, возвращается ошибка
=IFERROR(INDEX($C2:$G2,1,SMALL(IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2),COLUMN(A1))),"")
возвращает значение и заменяет ошибки пустой ячейкой.
person
Jerry Jeremiah
schedule
19.07.2017