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

У меня есть данные в следующем порядке:

enter image description here

Я хочу, чтобы формула передавала данные между началом содержимого и концом содержимого. Объем содержимого между началом и концом не ограничивается только 4 и может изменяться.

Ответы [ 3 ]

2 голосов
/ 04 мая 2019

Вы не говорите, что хотите сделать с этим результатом.

Я предполагаю, что вы можете закодировать столбец, в котором находятся ваши данные.

Формула ниже вернет эти значения в виде массива. например с вашими данными формула вернет {1;2;3;4}

Значения могут быть числовыми или текстовыми.

Как вы хотите обрабатывать эти значения, зависит от вас.

=INDEX($A:$A,N(IF(1,ROW(INDEX($A:$A,MATCH("Content Start",$A:$A,0)+1,1):INDEX($A:$A,MATCH("Content End",$A:$A,0)-1,1)))))

РЕДАКТИРОВАТЬ : Вот пример использования этой информации для создания спарклайна. В этом примере приведенная выше формула была заключена в TRANSPOSE и введена как формула массива в C1:I1. Sparkline был введен в B1. Как и в большинстве диаграмм, Excel игнорирует ошибки #N/A.

enter image description here

А вот пример, где спарклайн находится в A1, а транспонированный массив находится где-то еще, вне поля зрения, на листе:

enter image description here

1 голос
/ 03 мая 2019

Возможно несколько способов сделать это, но если вы предпочитаете делать это без VBA, вы можете использовать:

enter image description here

Формула, используемая в B1 (хотя и немного длинно):

{=INDEX($A$1:$A$10,SMALL((ROW($A$1:$A$10)>MATCH("Content Start",$A$1:$A$10,0))*(ROW($A$1:$A$10)<MATCH("Content End",$A$1:$A$10,0))*ROW($A$1:$A$10),SUM((ROW($A$1:$A$10)>MATCH("Content Start",$A$1:$A$10,0))*(ROW($A$1:$A$10)<MATCH("Content End",$A$1:$A$10,0)))+ROW(A3)))}

Обратите внимание, что это формула массива, введенная через Ctrl Shift Enter

Dragвниз ....

1 голос
/ 03 мая 2019
With Worksheets("Your Sheet").Range("A:A")
    Set c = .Find("Content Start", LookIn:=xlValues)
    Set d = .Find("Content End", LookIn:=xlValues)
    ActiveSheet.Range(Cells(c.Row + 1, c.Column), Cells(d.Row - 1, c.Column)).Select
End With
...