Excel逆向查找:从LOOKUP到XMATCH,精准定位字符串最后一个符号

发布时间:2026/8/17 11:05:56

Excel逆向查找:从LOOKUP到XMATCH,精准定位字符串最后一个符号
1. 问题场景为什么“最后一个符号”这么难找如果你经常用Excel处理文本比如整理产品型号、分析日志数据或者清洗用户地址肯定遇到过这种头疼的情况一个单元格里有一串字符里面混杂着多个相同的分隔符比如逗号、斜杠、横杠而你的任务偏偏是要找到其中最后一个分隔符的位置。举个例子你手头有一批从系统导出的数据产品路径是这样的仓库A/货架B/分区C/产品D12345你需要提取出最后的产品编号产品D12345。再比如你拿到一串包含多个版本号的字符串V1.2.3-beta.4你想定位最后一个点号.的位置以便分离出版本号4。这时候你可能会本能地想到FIND函数。但FIND有个“坏脾气”它只认第一个。你写FIND(/, A1)它欢天喜地地告诉你第一个斜杠在哪儿对后面的斜杠视而不见。你也可能试过SEARCH它虽然不区分大小写但同样是个“从一而终”的家伙只返回第一次出现的位置。网上常见的“从右向左查找”教程往往会搬出LOOKUP函数配合一个巨大的数组公式长得让人望而生畏比如LOOKUP(1,0/(MID(A1,ROW(INDIRECT(1:LEN(A1))),1)/),ROW(INDIRECT(1:LEN(A1))))这个公式确实能解决问题但它背后的原理是什么为什么这么写有没有更直观、更容易理解和维护的方法更重要的是当数据量变大或者分隔符条件变得更复杂比如查找最后一个数字、最后一个字母或者特定组合符号时我们该怎么办这正是本篇要拆解的核心在Excel中如何稳健、高效且易于理解地定位字符串内符合特定条件的最后一个符号。我们将从最基础的函数组合讲起一直深入到数组公式和动态数组的现代解法并分享我处理这类问题时积累的实战心得和避坑指南。2. 核心思路拆解逆向思维与函数组合要解决“查找最后一个”的问题关键在于转换思路。既然Excel的查找函数默认“从左向右”那我们就得想办法让它“从右向左”工作。这里有两个核心的思维路径路径一利用文本反转这是最直观的“物理”方法。既然要找原字符串的最后一个那我把字符串倒过来不就变成找新字符串的第一个了吗在Excel中虽然没有直接的REVERSE函数但我们可以借助MID、ROW等函数组合来实现字符串反转。找到反转后字符串中第一个目标符号的位置后再用字符串总长度换算一下就能得到原字符串中的位置。这个方法的优点是逻辑清晰一步是一步缺点是公式会稍显冗长。路径二利用查找函数的特性进行“欺骗”这是更巧妙也更常用的“逻辑”方法。我们不去真正地反转字符串而是利用FIND或SEARCH函数的一个可选参数——[start_num]即开始查找的位置。我们可以从一个非常大的起始位置开始查找让函数“以为”目标符号在很后面从而迫使它返回最后一个匹配项。LOOKUP函数正是实现这种“欺骗”的绝佳工具因为它天生就擅长在数组中查找最后一个匹配值。此外XMATCH等新函数也为此类场景提供了更强大的支持。无论采用哪种路径都离不开几个基础函数的深度理解和灵活组合LEN获取字符串长度是进行位置计算的基础。FIND/SEARCH执行查找的核心。FIND区分大小写SEARCH不区分且支持通配符?,*。MID根据位置提取子字符串是验证我们查找结果是否正确的手段也是最终目的。ROW/COLUMN用于生成一个序列数字数组是构造查找范围的关键。LOOKUP/XMATCH实现“查找最后一个”逻辑的灵魂函数。在接下来的部分我们将沿着这两条路径给出具体的、可逐行理解的公式并解释每一个参数为何这样设置。3. 经典解法详解LOOKUP函数的精妙运用在Excel 365之前的版本中LOOKUP函数是解决此类问题的“瑞士军刀”。它虽然古老但功能强大。我们先来看最经典的公式结构然后拆解其每一部分的含义。假设数据在A1单元格我们要查找最后一个斜杠/的位置。LOOKUP(1, 0/(MID(A1, ROW(INDIRECT(1:LEN(A1))), 1)/), ROW(INDIRECT(1:LEN(A1))))这个公式看起来复杂但我们可以把它分解成三个核心部分来理解### 3.1 构造查找向量遍历字符串的每一个字符ROW(INDIRECT(1:LEN(A1)))是公式的引擎。它的作用是生成一个从1到字符串长度的自然数数组。LEN(A1)得到字符串的总字符数。INDIRECT(1:LEN(A1))INDIRECT函数将文本字符串1:10假设长度为10转换为一个真正的行号引用1:10。ROW(1:10)对这个行号引用使用ROW函数返回一个垂直数组{1;2;3;4;5;6;7;8;9;10}。这个数组代表了字符串中每个字符的位置索引。### 3.2 构造条件判断识别目标符号MID(A1, ROW(INDIRECT(1:LEN(A1))), 1)/是公式的逻辑判断核心。MID(A1, {1;2;3;...}, 1)利用上一步生成的数组作为MID函数的第二个参数起始位置分别从第1、2、3...个位置开始提取1个字符。这会将字符串拆分成一个由单个字符组成的数组。例如对于A/B/C会得到数组{A;/;B;/;C}。... /将这个字符数组与目标符号/进行逐一比较。比较的结果是一个由TRUE和FALSE组成的逻辑值数组。对于A/B/C会得到{FALSE;TRUE;FALSE;TRUE;FALSE}。### 3.3 LOOKUP的查找逻辑定位最后一个TRUELOOKUP(1, 0/逻辑数组, 位置数组)是公式的“临门一脚”。0/逻辑数组这是一个关键技巧。在Excel中0除以TRUE相当于1等于00除以FALSE相当于0会产生#DIV/0!错误。所以0/{FALSE;TRUE;FALSE;TRUE;FALSE}会得到{#DIV/0!;0;#DIV/0!;0;#DIV/0!}。我们得到了一个由0和错误值组成的查找向量。LOOKUP(1, 查找向量, 位置数组)LOOKUP函数会在查找向量中查找小于或等于**查找值1**的最大值。它会自动忽略错误值。在这个例子中查找向量里只有0比1小而且最后一个0出现在第4个位置对应原字符串第二个斜杠的位置。LOOKUP找到这个最后一个0后就返回结果向量即ROW生成的位置数组{1;2;3;4;5}中对应位置的值也就是4。这正是最后一个斜杠/在字符串A/B/C中的位置。注意LOOKUP要求查找向量必须按升序排列。我们的查找向量0和错误值中0是唯一有效的数字且因为错误值被忽略所以这个条件是满足的。这是该公式成立的前提。### 3.4 公式的变体与应用掌握了核心原理这个公式可以千变万化查找最后一个数字将/改为ISNUMBER(--MID(A1, ROW(INDIRECT(1:LEN(A1))), 1))。这里用--两个负号尝试将文本字符转为数字非数字会报错再用ISNUMBER判断。查找最后一个字母将条件改为AND(MID(A1, ROW(INDIRECT(1:LEN(A1))), 1)A, MID(A1, ROW(INDIRECT(1:LEN(A1))), 1)z)注意这会把大小写字母都包含在内如果需要区分范围要调整。查找特定组合如“-X”条件会变得更复杂可能需要结合AND和OR或者使用SEARCH在子串中查找。这个方法的优点是兼容性极好几乎所有Excel版本都能用。缺点是公式较长且由于使用了易失性函数INDIRECT以及潜在的ROW在大型数据集中可能会影响计算性能。4. 现代高效解法XMATCH与动态数组的降维打击如果你使用的是Office 365或Excel 2021及以后版本那么恭喜你你拥有了更强大的武器——动态数组函数。解决“查找最后一个”的问题从此变得异常简洁和高效。### 4.1 使用XMATCH函数XMATCH函数是MATCH的增强版它新增了一个至关重要的参数[search_mode]。通过设置这个参数我们可以直接指定搜索方向。 查找最后一个斜杠/的公式简化为XMATCH(/, MID(A1, SEQUENCE(LEN(A1)), 1), 0, -1)SEQUENCE(LEN(A1))替代了老式的ROW(INDIRECT(...))直接生成一个1到LEN(A1)的序列数组更直观、性能更好。MID(A1, SEQUENCE(...), 1)同样将字符串拆分为单字符数组。XMATCH(查找值, 查找数组, 0, -1)0表示精确匹配。-1表示从后往前搜索即查找最后一个匹配项。这正是我们需要的功能这个公式的逻辑直白得惊人“在这个字符数组里从后往前找第一个等于/的是第几个”一步到位无需迂回。### 4.2 使用FILTER函数另一种思路是利用FILTER函数直接筛选出所有匹配的位置然后取最后一个。TAKE(FILTER(SEQUENCE(LEN(A1)), MID(A1, SEQUENCE(LEN(A1)), 1)/), -1)FILTER(位置数组, 条件)筛选出所有满足条件字符等于/的位置索引。TAKE(数组, -1)TAKE函数可以提取数组的开头或结尾部分。-1表示取最后一个元素。这个公式分两步逻辑也非常清晰先找出所有的再要最后一个。它特别适合当你需要知道所有匹配位置而不仅仅是最后一个时。### 4.3 新旧方法对比与选择建议特性经典LOOKUP法现代XMATCH法现代FILTERTAKE法公式复杂度高不易读懂低直观易懂中分步逻辑清晰函数要求所有版本通用需 Office 365 / Excel 2021需 Office 365 / Excel 2021计算性能一般使用易失函数优秀优秀逻辑直观性绕需理解“欺骗”机制非常直观直观扩展性修改条件较繁琐修改条件方便极强易于获取所有匹配项选择建议追求兼容性如果文件需要在不支持动态数组的旧版Excel中打开必须使用LOOKUP法。追求简洁与性能如果环境允许首选XMATCH法。它是最符合直觉、书写最简洁的方案。需要处理多个结果如果你后续可能还需要知道倒数第二个、或者所有符号的位置那么FILTER法是更好的起点你可以方便地使用TAKE(数组, -2)或INDEX来获取其他位置。5. 实战应用与深度扩展从定位到提取找到位置只是第一步我们的最终目的通常是提取最后一个符号后面或前面的内容。这里结合查找位置的公式给出完整的提取方案。### 5.1 提取最后一个分隔符后的内容这是最常见的需求。假设我们已用pos变量代表找到的最后一个/的位置。使用RIGHT函数RIGHT(A1, LEN(A1) - pos)。这是最直接的方法用总长度减去位置得到后面字符的长度。使用MID函数MID(A1, pos 1, LEN(A1))。从位置1开始提取足够长直到末尾的字符。例如对于仓库A/货架B/分区C/产品D12345pos是最后一个/的位置假设为9。LEN(A1)-9得到产品D12345的长度RIGHT函数即可将其提取出来。### 5.2 提取最后一个分隔符前的内容有时我们需要路径的目录部分。使用LEFT函数LEFT(A1, pos - 1)。直接截取从开头到最后一个符号前一位的字符串。### 5.3 处理找不到符号的情况错误处理这是实战中极易出错的一环。如果字符串中根本没有目标符号我们的查找公式会返回错误#N/A或#VALUE!导致后续的提取公式也报错。 我们必须使用IFERROR函数进行包裹。 完整的、健壮的提取最后一个/后内容的公式以XMATCH法为例如下IFERROR(RIGHT(A1, LEN(A1) - XMATCH(/, MID(A1, SEQUENCE(LEN(A1)), 1), 0, -1)), A1)这个公式的意思是如果查找和提取过程出错即没有/则返回原字符串A1本身。你也可以根据业务需要返回空或特定的提示文本如“未找到分隔符”。### 5.4 应对更复杂的“符号”条件“符号”不一定是一个字符也可能是一个条件。查找最后一个数字结合ISNUMBER和--。pos XMATCH(TRUE, ISNUMBER(--MID(A1, SEQUENCE(LEN(A1)), 1)), 0, -1)注意--MID(...)会将非数字文本转为错误值ISNUMBER会得到TRUE/FALSE数组XMATCH查找最后一个TRUE。查找最后一个大写字母pos XMATCH(TRUE, (MID(A1, SEQUENCE(LEN(A1)), 1)A)*(MID(A1, SEQUENCE(LEN(A1)), 1)Z), 0, -1)这里利用布尔值乘法*来实现AND逻辑只有同时满足大于等于A且小于等于Z的字符其乘积才为1TRUEXMATCH查找最后一个TRUE即1。查找特定文本模式如最后一个“-X”其中X是数字这需要更复杂的数组运算可能用到LET函数定义中间变量来保持公式可读性或者考虑使用TEXTSPLIT等新函数先拆分再处理。6. 性能优化与避坑指南在实际工作中尤其是处理数万行数据时公式的性能和稳定性至关重要。以下是我踩过坑后总结的经验。### 6.1 避免易失性函数的过度使用在经典LOOKUP公式中INDIRECT(1:LEN(A1))是一个易失性函数。这意味着任何工作表变动哪怕不相关单元格被编辑都会导致它重新计算。在大型模型中这会是性能杀手。优化建议如果必须使用旧版公式可以尝试用ROW(INDEX($A:$A, 1):INDEX($A:$A, LEN(A1)))来替代ROW(INDIRECT(...))。INDEX是非易失性函数这个组合能生成同样的序列数组但性能更好。当然终极解决方案还是升级到支持SEQUENCE的版本。### 6.2 数组公式的计算范围无论是老式的ROW(INDIRECT(...))还是新的SEQUENCE(LEN(A1))它们都创建了一个与字符串等长的内存数组。对于一个100个字符的单元格就需要进行100次MID和比较操作。如果数据行数很多计算量依然可观。经验之谈如果字符串长度普遍很长如超过500字符且数据量巨大数万行频繁使用此类公式可能会感到卡顿。这时可以考虑预处理数据是否能在数据源如SQL查询、Power Query清洗阶段就完成这种分割这通常是最优解。使用辅助列将“查找位置”和“提取内容”分到两列比在一个超级复杂的嵌套公式里完成所有步骤有时更利于计算引擎优化和后续的调试。评估使用VBA自定义函数对于极其复杂的、固定模式的文本处理编写一个专用的VBA函数一次循环解决问题性能可能远超数组公式。但这牺牲了公式的透明度和便携性。### 6.3 常见错误排查#N/A错误最常见的原因是查找值不在字符串中。务必用IFERROR包裹。#VALUE!错误检查MID函数的参数是否正确特别是SEQUENCE生成的位置数组是否合理。在旧公式中INDIRECT的参数拼接如果出错例如LEN返回0导致1:0也会引发此错误。结果不对找到了但不是最后一个检查LOOKUP的查找向量是否确保升序。在复杂条件中如果条件判断结果不是由0和错误值构成可能会破坏升序条件。检查XMATCH的[search_mode]参数是否正确地设置为-1从后往前。确认你的“符号”条件是否准确。例如查找“点号”时.在SEARCH中是通配符代表任意单个字符必须写成~.才能查找真正的句点。而FIND函数中则不需要。### 6.4 一个被我忽视的“坑”空格与不可见字符我曾经花了半小时调试一个公式明明肉眼看到有斜杠公式就是找不到。最后发现数据源里的“斜杠”后面跟了一个不间断空格Char(160)它看起来和普通空格一样但FIND(/, ...)无法匹配/CHAR(160)这个整体。解决方案先使用CLEAN或SUBSTITUTE函数清洗数据。CLEAN可以移除换行等非打印字符对于空格问题可以用SUBSTITUTE(A1, CHAR(160), )将不间断空格替换为普通空格。在文本处理前进行数据清洗是一个值得养成的好习惯。处理Excel中的文本尤其是定位特定字符就像在迷宫中寻找特定的房间。理解LOOKUP的“欺骗”艺术或掌握XMATCH的“逆向”搜索就等于拿到了迷宫的地图。从复杂的数组公式到简洁的动态数组函数工具在进化但核心的逆向思维不变。记住再复杂的公式也是由基础函数搭建的拆解它、理解每一步在做什么你就能举一反三应对各种“查找最后一个”的变体需求。最后永远别忘了用IFERROR给你的公式系上“安全带”并在处理前瞥一眼数据里是否藏着那些讨厌的不可见字符。

相关新闻

OCR技术实现报销单自动填写的开发实践

OCR技术实现报销单自动填写的开发实践

2026/8/17 11:05:56

1. 为什么我们需要报销单自动填写工具 每个月处理报销单的日子总是让人头疼。上周五下午,我又一次面对堆积如山的发票和空白的报销单表格,突然意识到这已经是我本月第三次因为报销问题加班到晚上九点。每次都要手动录入几十张发票的金额、日期、品类信息…

Jupyter Notebook安装配置全攻略:从环境搭建到高效工作流优化

Jupyter Notebook安装配置全攻略:从环境搭建到高效工作流优化

2026/8/17 11:05:56

1. 项目概述:为什么你的Jupyter Notebook总是不“听话”?如果你刚开始接触Python数据分析或机器学习,Jupyter Notebook几乎是你绕不开的工具。它那交互式的单元格、直观的图文混排能力,让代码编写、数据探索和结果展示变得异常丝滑…

彻底卸载Microsoft Edge:从系统组件管理到WebView2运行时处理的完整指南

彻底卸载Microsoft Edge:从系统组件管理到WebView2运行时处理的完整指南

2026/8/17 10:55:56

1. 为什么“卸载Edge”成了技术圈的玄学问题?如果你在搜索引擎里敲下“如何彻底卸载Edge”,大概率会看到一堆教程,从简单的控制面板卸载到复杂的PowerShell命令,再到各种第三方工具。但真正操作过的人,心里都清楚&…

腾讯YouToGraphRAG:从向量检索到知识推理的RAG架构演进

腾讯YouToGraphRAG:从向量检索到知识推理的RAG架构演进

2026/8/17 13:26:03

如果你正在构建企业级知识库,是否遇到过这样的困境:传统的RAG(检索增强生成)系统虽然能回答简单问题,但在处理复杂、多跳的查询时,常常“答非所问”或“信息碎片化”?比如,当用户问“…

Win11密码遗忘自救指南:从账户原理到实战破解

Win11密码遗忘自救指南:从账户原理到实战破解

2026/8/17 13:26:03

1. 项目概述:当“门禁卡”失灵时 那天下午,我正赶着处理一份紧急报告,手指在键盘上飞舞,屏幕上的光标却突然停住了。Windows 11的登录界面,那个熟悉的头像下方,光标在密码框里无情地闪烁。我尝试输入了三个…

Win10系统实现DDS与TGA文件缩略图预览的三种方案与原理详解

Win10系统实现DDS与TGA文件缩略图预览的三种方案与原理详解

2026/8/17 13:26:03

1. 从一次尴尬的素材管理说起:为什么我们需要DDS和TGA缩略图? 作为一名经常和游戏素材、三维贴图或者高分辨率图像打交道的从业者,我敢说,你一定遇到过这样的场景:文件夹里躺着几十上百个 .dds 或 .tga 文件&#…

智能体记忆管理:从向量检索到层级导航的工程实践

智能体记忆管理:从向量检索到层级导航的工程实践

2026/8/17 13:26:03

1. 从“翻箱倒柜”到“按图索骥”:智能体记忆管理的范式转变最近在折腾一些智能体(Agent)项目时,一个老问题又冒了出来:当智能体需要处理的任务越来越复杂,交互历史越来越长,它怎么才能快速、准…

解决eNSP在Win10虚拟机中设备启动卡在#号问题的完整指南

解决eNSP在Win10虚拟机中设备启动卡在#号问题的完整指南

2026/8/17 13:26:03

1. 问题现象与核心场景定位 如果你在Windows 10的虚拟机里折腾华为eNSP,大概率会遇到这个让人血压飙升的场景:满怀期待地双击启动路由器或交换机设备,命令行窗口弹出来了,但光标就卡在一个孤零零的“#”号后面,一动不动…

MySQL AUTO_INCREMENT:从原理到实战,全面解析自增主键的设计与优化

MySQL AUTO_INCREMENT:从原理到实战,全面解析自增主键的设计与优化

2026/8/17 13:16:02

1. 从“手动分配”到“自动生成”:为什么我们需要AUTO_INCREMENT? 在数据库设计的早期,给每一条新记录找一个唯一标识符,常常是件让人头疼的事。想象一下,你负责一个用户注册系统,每当有新用户加入&#xf…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/17 1:28:42

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/16 0:04:13

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/17 8:40:51

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

2026/8/17 0:05:22

1. 项目概述:为什么异步调用是LabVIEW进阶的必修课? 如果你用LabVIEW做过稍微复杂点的项目,尤其是涉及界面响应、多任务并行或者硬件IO等待的场景,大概率遇到过这样的窘境:前面板点个按钮,整个程序就“卡死…

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

2026/8/17 0:05:22

1. 项目概述:为什么异步调用是LabVIEW进阶的必经之路如果你在LabVIEW里写过稍微复杂点的程序,尤其是涉及到界面响应、多任务并行或者硬件IO等待,大概率会遇到一个头疼的问题:程序“卡”住了。前面板点不动,进度条不更新…

飞书局域网文件传输实战:3种方案实现高速点对点传输

飞书局域网文件传输实战:3种方案实现高速点对点传输

2026/8/17 0:05:22

1. 项目概述:为什么要在局域网内用飞书传文件? 飞书作为一款主流的协同办公套件,其核心功能是围绕云端协作设计的。无论是文档、表格还是文件,通常的分享逻辑都是“上传到云端 -> 生成链接 -> 分享给同事”。这个流程在互联…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/14 19:35:14

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…