根据Google表格中的一个数字列检索最后n行

时间:2018-12-21 07:21:25

标签: google-sheets data-extraction google-sheets-formula

我的数据如下:

+---------------+-----+-----+------+-----+-----+
| 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 |
+---------------+-----+-----+------+-----+-----+

我想查询DATA列不为空的最后7行数据。尝试实现以下目标:

+----+---+---+------+---+---+
|  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 :(得分:2)

假设您的序列号是连续的,并以此进行排序。

=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

答案 1 :(得分:0)

基于说明而非示例:

distinct
  

(“后7行数据,其中DATA列不为空。”)