问题
- 如何筛选满足某些条件下的所有数据并进行聚合?sumif\sumifs
- 如何远程引用另一个Googlesheet中的数据?importrange
- 如何远程引用另一Googlesheet中满足某些条件下的所有数据并进行聚合?query
优点
- 可以引用资料来源
- 可以 aggregate data, rearrange data, create new data, filter data, sort data
- Query 里面包含 10 几种函数可以写,就像在 Google Sheet 里面写 SQL 一样,更方便了
QUERY语法
QUERY(data,query,[headers])
- data - 要执行查询的单元格范围。
- 每列数据中的数值类型只能是布尔值、数字(包括日期/时间类型)或字符串。
- 如果有多种数据类型掺杂在单个列中,为便于查询,该列的数据类型由其中大多数数据的类型决定。其他少数数据的类型则被视为空值。
- 格式一般为:‘sheet名’!A:C,以 ‘ ‘ 单引号选取资料范围
- 远程引用:importrange(“Googlesheet链接”, “‘sheet名’!A:H”)
- query - 要执行的查询操作。
- 查询的值必须括在引号中,否则该值必须是指向包含相关文本的单元格的引用。
- String 文字格式:以 ‘ ‘ 单引号的方式显示为文字
- Numbers 数字格式:直接輸入數值就可以了
- Time/Date 时间或是日期格式:可以将时间转为数值,或是以 date’2020-01-01’ 或是 TEXT(N12, “yyyy-mm-dd”) 的形式处理
- 可以访问查询语言参考进一步了解有关查询语言的详细信息。
- 查询的值必须括在引号中,否则该值必须是指向包含相关文本的单元格的引用。
- headers - [可选] - 数据上方的标题行的数目。如果省略或设置为-1,将根据数据的内容估算该值。
QUERY常用语言
- SELECT all the data
- =QUERY(‘ROW DaTa’!A:P,“SELECT *”,1)
- SELECT specific columns only
- =QUERY(‘ROW DaTa’!A:P,“SELECT B, D”,1)
- WHERE
- =QUERY(‘ROW DaTa’!A:P,“SELECT B, D WHERE D > 100000000”,1)
- GROUP BY
- =QUERY(‘ROW DaTa’!A:P,“SELECT C, count(B) GROUP BY C”,1)
- PIVOT
- =QUERY(‘RAW Data’!A:P,“select C,sum(L) GROUP BY C PIVOT G”)
- ORDER BY
- =QUERY(‘ROW DaTa’!A:P,“SELECT B, C, D ORDER BY D ASC”,1)
- LIMIT
- =QUERY(‘ROW DaTa’!A:P,“SELECT B, C, D ORDER BY D ASC LIMIT 10”,1)
- Offset: 跳过除了表头以外的 10 行
- =QUERY(‘RAW Data’!A:P,“select * Offset 10”)
- Arithmetic functions
- =QUERY(‘ROW DaTa’!A:P,“SELECT B, C, (D / 7162119434) * 100”,1)
- LABEL
- =QUERY(‘ROW DaTa’!A:P,"SELECT B, C, (D / 7162119434) * 100 LABEL (D /7162119434) * 100 ‘Percentage’ ",1)
- =QUERY(‘ROW DaTa’!A:P,"SELECT (D / 7162119434) * 100 LABEL (D /7162119434) * 100 ‘’ ",1)
- FORMAT
- 可以用来调整結果,是以怎样的「格式」呈现
- 日期:=QUERY(‘RAW Data’!A:P,“select K format K ‘dd-mm-yyyy’”)
- 时间:=QUERY(‘RAW Data’!A:P,“select K format K ‘HH:MM:SS’”)
- 数值:=QUERY(‘RAW Data’!A:P,“select K format K ‘##,##0.00’”)
- Aggregation functions
- =QUERY(‘ROW DaTa’!A:P,“SELECT max(D), min(D), avg(D)”,1)
QUERY顺序
- Google Sheet Query 函数在写的時候的先后順序:
- SELECT, WHERE, GROUP BY, PIVOT, ORDER BY, LIMIT, OFFSET, LABEL, FORMAT
- 排序必须照着这个顺序写!以免函数不能运转!
QUERY实操
引用日期
Where 中要选择日期有两种方法,第一种是转成数值 (推荐!因为简单),第二种方法是转成日期格式
- 第一种:直接 Q <= 43862 (日期本来就可以自动转成数值),在格式中选择
- =QUERY(‘RAW Data’!A:Q, “select A,Q Where Q <= 43862”)
- =QUERY(‘RAW Data’!A:Q, “select A,Q Where Q <=” &J12)
- 第二种:date’2020-01-01’ 或是 TEXT(N12,”yyyy-mm-dd”)
- =QUERY(‘RAW Data’!A:P,“select A,E where K= date’2020-01-01’”)
- =QUERY(‘RAW Data’!A:P,“select A,E where K= date’” & TEXT(N12,“yyyy-mm-dd”) & “'”)
用 Where 筛选多条件
在 SQL 语法里用 in ( )
那在 Google Sheet Query 里有三种方法可以做多条件筛选,给大家参考
- 如果有好几个条件想要同时筛选,可以用 OR 或是 AND 组起來
- 用 MATCHES ‘(条件1|条件2|条件3)’,这个方法类似 in ( )
- 条件中文字不需要包单引号,中间用英文 | 隔开
- 用 TEXTJOIN 小工具,把 or 和所有条件快速组起來
= TEXTJOIN (delimiter, ignore_empty, text1, [text2], …)
delimiter – Separator between each text.
ignore_empty – Whether to ignore empty cells or not.
text1 – First text value or range.
text2 – [optional] Second text value or range. - 模糊比对 Like ‘%A%’
练习题
Googlesheet链接:https://docs.google.com/spreadsheets/d/1pKQyAKZZ532ZEVpqH9SETlQvAXth_1D-Zlkr5dIghh0/edit#gid=813131463
IMPORTRANGE函数
IMPORTRANGE语法
IMPORTRANGE(spreadsheet_url, range_string)
- spreadsheet_url - 需要引用的数据所在GS的URL
- spreadsheet_url 的值必须括在双引号中
- range_string - 符合 “[sheet_name!]range” 格式的字串 (e.g. “Sheet1!A2:B6” 或 “A2:B6”),用于指定要汇入的范围
- sheet_name为选择性使用;不写IMPORTRANGE 会由第一份工作表中的指定范围汇入
- range_string 的值必须放置在引号内
练习题
Googlesheet链接:https://docs.google.com/spreadsheets/d/1tOJ-hjYb8GUvtEUIB4YNekYDwpd7huRHT-bY_CO4-s4/edit#gid=2057640269