Получить последние n строк на основе одного числового столбца в Google листе - PullRequest
0 голосов
/ 21 декабря 2018

Мои данные выглядят так:

+---------------+-----+-----+------+-----+-----+
| Serial Number | LSL | LCL | DATA | UCL | USL |
+---------------+-----+-----+------+-----+-----+
|             1 |   1 |   3 | 2.3  |   7 |   9 |
|             2 |   1 |   3 | 3.1  |   7 |   9 |
|             3 |   1 |   3 | 2.7  |   7 |   9 |
|             4 |   1 |   3 | 4.9  |   7 |   9 |
|             5 |   1 |   3 | 5    |   7 |   9 |
|             6 |   1 |   3 | 3    |   7 |   9 |
|             7 |   1 |   3 | 10   |   7 |   9 |
|             8 |   1 |   3 | 7.8  |   7 |   9 |
|             9 |   1 |   3 |      |   7 |   9 |
|            10 |   1 |   3 | 6.8  |   7 |   9 |
|            11 |   1 |   3 | 10   |   7 |   9 |
|            12 |   1 |   3 | 3.9  |   7 |   9 |
|            13 |   1 |   3 | 11.3 |   7 |   9 |
|            14 |   1 |   3 |      |   7 |   9 |
|            15 |   1 |   3 |      |   7 |   9 |
|            16 |   1 |   3 |      |   7 |   9 |
|            17 |   1 |   3 |      |   7 |   9 |
|            18 |   1 |   3 |      |   7 |   9 |
|            19 |   1 |   3 |      |   7 |   9 |
|            20 |   1 |   3 |      |   7 |   9 |
+---------------+-----+-----+------+-----+-----+

Я хочу запросить данные последних 7 строк, где столбец DATA не пустой.Пытаясь добиться чего-то вроде этого:

+----+---+---+------+---+---+
|  7 | 1 | 3 | 10   | 7 | 9 |
|  8 | 1 | 3 | 7.8  | 7 | 9 |
|  9 | 1 | 3 |      | 7 | 9 |
| 10 | 1 | 3 | 6.8  | 7 | 9 |
| 11 | 1 | 3 | 10   | 7 | 9 |
| 12 | 1 | 3 | 3.9  | 7 | 9 |
| 13 | 1 | 3 | 11.3 | 7 | 9 |
+----+---+---+------+---+---+

Но в настоящее время я могу получить только последние 7 строк данных, которые выглядят так:

+---------------+-----+-----+------+-----+-----+
| Serial Number | LSL | LCL | DATA | UCL | USL |
+---------------+-----+-----+------+-----+-----+
|            14 |   1 |   3 |      |   7 |   9 |
|            15 |   1 |   3 |      |   7 |   9 |
|            16 |   1 |   3 |      |   7 |   9 |
|            17 |   1 |   3 |      |   7 |   9 |
|            18 |   1 |   3 |      |   7 |   9 |
|            19 |   1 |   3 |      |   7 |   9 |
|            20 |   1 |   3 |      |   7 |   9 |
+---------------+-----+-----+------+-----+-----+

Формула, которую я использовал:

=SORT(QUERY(Sheet1!A7:F,"order by A desc limit 7"),1,1)

Эта формула не включает в себя условие, что последняя строка столбца DATA не должна быть пустой.Есть ли способ достичь того, что я ищу?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

На основе описания, а не примера:

=query(query(A:F,"where D is not NULL order by A desc limit 7"),"order by Col1")

("данные последних 7 строк, в которых столбец DATA не пуст.")

0 голосов
/ 21 декабря 2018

При условии, что ваши серийные номера являются последовательными и отсортированы таким образом.

=QUERY(A:F,"Select * where A >= "&ARRAYFORMULA(INDEX(SORT(A2:F,1,false),MATCH(true,ISNUMBER(INDEX(SORT(A2:F,1,false),,4)),0),1))-6&" limit 7")

Разбивка:

=QUERY(A:F,"Select * where A >= "

//index used to find the first serial number with a number in the data column
&ARRAYFORMULA(INDEX(

//reverse order
SORT(A2:F,1,false),

//find first number in data column of reversed data
MATCH(true,ISNUMBER(

//get fourth column (data column) to check for numbers
INDEX(SORT(A2:F,1,false),,4)

//minus 6 so you can get the 6 rows above and the row found
),0),1))-6

//get the first 7 rows from the serial number that matches.
&" limit 7")

Spreadsheet screenshot

РЕДАКТИРОВАТЬ

После нашего разговора:

Если ваш первый столбец является датой и ваши даты являются последовательными без дубликатов, вы можете использовать это:

=QUERY(A:F,"Select * where A >= date '"&TEXT(INDEX(SORT(A2:F,1,false),MATCH(true,ISNUMBER(INDEX(SORT(A2:F,1,false),,4)),0),1)-6,"yyyy-mm-dd")&"' limit 7")

Разбивка:

=QUERY(A:F,"Select * where A >= date
//date tells query that it's looking for a date value

'"&TEXT(INDEX(SORT(A2:F,1,false),MATCH(true,ISNUMBER(INDEX(SORT(A2:F,1,false),,4)),0),1)-6,

"yyyy-mm-dd")&"' limit 7"))
//text formats the date in the way that query requires: yyyy-mm-dd

Second spreadsheet screenshot

...