Google Sheets单公式整理乒乓球原始数据需求(匹配N-Y列格式)
Google Sheets 单公式提取A列数据匹配指定格式
提取规则
- League列:输出内容为“1”的单元格上方的文本
- Game、Time、Home、Away列:提取所有包含“ - ”的单元格,以及该单元格之后连续3个单元格的内容
- F1列:提取包含“ - ”的单元格之后第4个单元格内容的前5位数字
- F2列:提取包含“ - ”的单元格之后第5个单元格内容的后4位数字
- T、T1、T2列:分别提取包含“ - ”的单元格之后第6、7、8个单元格的内容
单个公式实现
将以下公式粘贴到输出区域的首个单元格(比如N2):
=ARRAYFORMULA(LET( data,A:A, league_markers,IF(data="1",ROW(data),""), league_list,SCAN("",ROW(data),LAMBDA(a,c,IF(ISNUMBER(XMATCH(c,league_markers)),INDEX(data,c-1),a))), game_rows,FILTER(ROW(data),REGEXMATCH(data," - ")), IFERROR(QUERY({ INDEX(league_list,game_rows), INDEX(data,game_rows), INDEX(data,game_rows+1), INDEX(data,game_rows+2), INDEX(data,game_rows+3), REGEXEXTRACT(INDEX(data,game_rows+4),"\d{5}"), REGEXEXTRACT(INDEX(data,game_rows+5),"\d{4}$"), INDEX(data,game_rows+6), INDEX(data,game_rows+7), INDEX(data,game_rows+8) },"SELECT Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10 WHERE Col2 IS NOT NULL",0),""))
公式说明
- League列:通过
SCAN函数遍历A列,每当遇到内容为“1”的行,就记录其上方的联赛名称,并自动填充到后续所有行,直到下一个“1”出现 - Game/Time/Home/Away列:通过
FILTER定位所有含“ - ”的行,直接提取该行及后续3行的内容 - F1列:使用
REGEXEXTRACT匹配第4个偏移单元格中的前5位数字 - F2列:使用
REGEXEXTRACT匹配第5个偏移单元格中的末尾4位数字 - T/T1/T2列:直接提取第6、7、8个偏移单元格的内容
内容的提问来源于stack exchange,提问作者TheGunner4
相关产品推荐
相关产品推荐

