ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

WorkBuddy AI助手:用大白话让VBA自动统计考勤迟到

WorkBuddy AI助手:用大白话让VBA自动统计考勤迟到 每到月底总有一批人要对着考勤表发愁。行政、人事、财务甚至小团队的技术负责人都躲不过这件事从考勤系统里导出一张明细表然后统计谁迟到、迟到几次、总共迟到多少分钟。Excel函数能扛一部分但一旦涉及跨月筛选、按员工汇总、排除周末、迟到分钟取整公式就开始失控。找IT写VBA宏需求说三遍对方也不一定完全理解做好了还要排队等排期。自己学VBA对象、属性、方法、集合、循环、字典这些概念堆在一起还没入门就想放弃。但如果有一个工具能让你用“大白话”直接生成VBA代码情况就完全不同了。你只需要说帮我统计考勤明细表里每个员工的迟到次数和迟到总分钟9点前打卡算正常9点后算迟到结果输出到新工作表。它就能返回一段完整的VBA宏你复制到Excel里运行统计结果就出来了。这就是WorkBuddy这类AI编程助手在Excel自动化场景里最实用的价值把“业务需求”翻译成“可运行的代码”中间省掉的不只是查语法的时间更是“不会写代码的人”和“能跑起来的宏”之间的整段距离。这篇文章不聊大模型原理也不谈Agent架构就用“考勤迟到统计”这个真实业务场景讲清楚三件事第一WorkBuddy写VBA到底解决了什么痛点第二怎么把需求拆成AI能理解的话让它生成真正可用的宏第三拿到的代码怎么运行、怎么检查、怎么迭代调优。读完你不一定变成VBA高手但能独立完成一个考勤统计宏的落地下次月底统计就不用再加班了。1. 为什么Excel自动化总卡在“VBA”这道坎很多人对Excel自动化的理解停留在“函数用得好就行”。但函数公式有一个天然边界它是“无状态”的计算处理单行、单条件、固定范围的数据很顺手一旦遇到“逐行扫描、跨表汇总、按条件累加”这类任务要么公式长得没法维护要么运行一次卡半天。举个例子。统计迟到次数用COUNTIFS可以写统计某个员工上班打卡时间大于9点的记录数。但要继续加规则——只统计某个月、排除周末、把迟到分钟算出来、按员工汇总、输出到一张新表公式就开始失控了。你可以用SUMPRODUCT硬写但写完三个月后自己都看不懂换个同事来维护更是灾难。这时候VBA的价值就出来了它能在Excel里做循环、判断、字典汇总把复杂的业务规则用代码表达出来一次运行长期复用。问题在于VBA的入门门槛并不低。虽然VBA语法比Java、Python简单但它有自己的对象模型Workbook、Worksheet、Range、Cells、End、UsedRange还有数组、字典、集合、事件、模块这些概念。对一个只是想“统计考勤”的普通人来说要理解“字典的Key和Item怎么配合”“For Each循环遍历的是什么”“Range.End(xlUp).Row为什么能定位最后一行”需要花的时间远超预期。WorkBuddy这类AI编程工具真正降低的就在这里。它不改变VBA的语法也不改变Excel的对象模型而是把“从业务需求到可运行代码”的翻译成本降到了极低。你不会写循环没关系你只需要说清楚“考勤表长什么样、9点以后是迟到、结果要按员工汇总”AI就能生成对应的VBA代码。这个环节一旦打通“Excel自动化”就不再是程序员的专利。2. WorkBuddy的核心能力与适合场景WorkBuddy是一个AI编程助手方向的工具核心交互方式是“对话”。你描述需求它生成代码你反馈运行错误它修改代码你补充业务规则它重新调整逻辑。这种工作流听起来很简单但和“去搜索引擎找代码片段”有本质区别搜索引擎给你的是一个孤立的答案WorkBuddy是结合你给出的表结构、字段、规则和上下文生成一份相对完整的可运行代码并在后续对话里持续帮你优化。从目前公开信息和用户讨论来看WorkBuddy的能力不止于生成代码它还有上下文管理、Skill等机制。Skill可以理解成针对特定场景的“技能模板”——比如你经常需要写Excel相关的VBA宏就可以定义一个“Excel VBA助手”的Skill让AI固定按照某套规范输出代码包括注释风格、变量命名、错误处理方式。这样一来每次对话不需要重复解释背景规则WorkBuddy会更稳定地输出符合预期的代码。另一个值得注意的点是上下文管理如果你在对话中持续追加需求上下文占用会越来越高当上下文用量满了之后建议新开一个对话把核心需求重新描述一遍避免后续生成内容受历史信息干扰。但WorkBuddy并不适合所有场景。它最适合的是“小范围、场景化、业务规则清晰”的代码生成任务比如Excel自动化、Office脚本、小工具开发、特定功能模块的实现。它不适合用来设计大型系统架构、处理对性能有极致要求的复杂算法也不适合作为生产级代码的唯一来源——所有AI生成的代码都需要人工检查和验证。我的判断是WorkBuddy对VBA场景尤其友好。原因是VBA代码通常长度不长、逻辑集中、运行环境固定Excel内置非常适合AI生成。它不需要复杂依赖管理不需要部署粘贴进VBA编辑器就能跑。对一个人事或行政来说这比学Python、学数据处理框架要轻量得多。3. 考勤统计需求拆解在对话前想清楚规则用WorkBuddy写VBA和用搜索引擎查代码最大的不同是你要学会“把需求说清楚”。很多人在第一次使用时输入“帮我统计迟到”就期待AI返回一段完美代码结果生成的宏跑出来要么数据不对要么根本没处理边界情况。问题不出在AI而是需求描述里缺少关键信息。一个合格的Excel VBA需求至少包含四个部分表结构、统计口径、输出形式、边界条件。表结构是最重要的。你需要告诉AI考勤明细表里哪一列是日期、哪一列是工号、哪一列是姓名、哪一列是上班打卡、哪一列是下班打卡。这个信息决定了代码里Cells(i, 1)、Cells(i, 4)到底指向什么内容。如果你不说清楚AI只能猜猜出来的代码大概率不能直接用。统计口径要精确到“规则”。比如标准上班时间是9点还是9点半迟到是超过9点就算还是超过9点5分钟才算迟到分钟数按实际差值还是按整分钟向上取整请假、外勤、出差这些特殊记录怎么处理。这些规则直接影响代码里的比较逻辑和计算逻辑。输出形式决定了代码最后的写入方式。是新建一个工作表还是在原表旁边写汇总还是弹出一个提示框显示结果是否需要同时输出迟到明细。这个要提前定好否则AI默认生成的结果可能不符合你的使用习惯。边界条件是对常见脏数据进行兜底。比如打卡时间如果是文本格式怎么处理日期列里有没有空值同一员工可能出现多次打卡记录是否需要按月份过滤。把这些边界条件写进描述里AI生成的代码会更健壮。信息类型需要描述的内容影响代码的部分表结构工作表名、日期列/工号列/姓名列/打卡时间列Cells(i, 列号)的取值统计口径标准上班时间、迟到阈值、迟到分钟取整方式If判断条件、计算表达式输出形式新建工作表、汇总表字段、是否输出明细写入代码、工作表创建方式边界条件空值、文本时间、跨月数据、重复打卡IsDate判断、循环跳过逻辑、月份过滤对考勤统计来说一个可以直接复制给WorkBuddy的需求描述大概长这样请帮我写一个VBA宏 1. 数据源是“考勤明细”工作表数据从第2行开始。 A列是日期B列是工号C列是姓名D列是上班打卡时间E列是下班打卡时间。 2. 统计规则D列上班打卡时间晚于09:00算迟到。 迟到分钟数 实际打卡时间 - 09:00结果四舍五入到整数分钟。 3. 输出新建一个名为“迟到统计结果”的工作表。 第一行写标题工号、姓名、迟到次数、迟到总分钟。 从第2行开始写入每个员工的统计结果。 4. 用户名的单元格可能有空白行请跳过空白记录。这段描述里包含的每一个信息最终都会映射到VBA代码的某个部分。如果你能把这个模板填完整WorkBuddy生成的代码基本不会跑偏。4. 用WorkBuddy生成考勤迟到统计宏的五步流程把需求说清楚之后剩下的就是和WorkBuddy的对话过程。这里拆成五步每一步都有明确的目的。4.1 第一步打开WorkBuddy描述场景打开WorkBuddy的对话界面把上面那段需求描述粘贴进去。不需要额外寒暄直接给需求即可。如果WorkBuddy有预设的Skill选择一个适合“Excel VBA生成”的Skill能提高生成质量。4.2 第二步补充表结构和规则如果第一次生成的代码不符合预期不要反复说“不对、重新来”。更有效的方式是补充具体的差异信息。比如“D列的时间是文本格式不是日期格式请加IsDate兼容处理”“迟到超过30分钟需要单独标记”“统计某个月时日期列需要按yyyy-mm过滤”。信息越具体修改越准确。4.3 第三步生成代码WorkBuddy会返回一段VBA代码通常包含注释和说明。你需要做的是快速浏览代码结构确认是否有Sub过程、是否使用了Dictionary、是否创建了工作表。不需要完全读懂但要对“逻辑入口”有个印象。4.4 第四步复制到VBA编辑器并运行打开Excel按AltF11进入VBA编辑器在左侧工程资源管理器中找到当前工作簿下的模块右键插入一个模块把代码粘贴进去然后按F5运行宏。如果代码引用了某个不存在的表名运行时会提示错误这时回到第4.2步把正确的表名告诉WorkBuddy。4.5 第五步验证结果并迭代运行结束后检查生成的“迟到统计结果”工作表。用几个已知的员工做对账确认迟到次数和迟到分钟数是否和人工统计一致。如果有出入把差异的具体情况反馈给WorkBuddy比如“张三的迟到分钟数比人工统计多了5分钟因为9:05打卡算成了迟到但实际应该是9:05含以内不算迟到”。这就是一次有效的迭代。整个流程的核心不是“一次生成直接跑通”而是“生成—运行—反馈修改”。把每一次修改反馈写清楚WorkBuddy就会越来越懂你的业务规则。5. 完整代码实现考勤迟到统计VBA宏下面给出三份代码。第一份是基础版适合考勤表干净、规则简单的情况第二份是增强版增加了月份过滤、迟到明细输出、文本时间兼容第三份是一个可复用的辅助函数。5.1 基础版员工迟到汇总假设考勤明细表结构如下A列日期B列工号C列姓名D列上班打卡时间E列下班打卡时间数据从第2行开始第1行是标题。标准上班时间为09:00。 文件位置当前工作簿的标准模块中 Option Explicit Sub CountLateAttendance() Dim wsData As Worksheet Dim wsResult As Worksheet Dim lastRow As Long Dim i As Long Dim dict As Object Dim key As String Dim empId As String Dim empName As String Dim punchIn As Variant Dim standardTime As Date Dim actualTime As Date Dim lateMins As Long Dim arrData As Variant 源数据工作表 Set wsData ThisWorkbook.Sheets(考勤明细) 标准上班时间 standardTime TimeValue(09:00:00) 字典用于按员工汇总 Set dict CreateObject(Scripting.Dictionary) 获取数据区域最后一行 lastRow wsData.Cells(wsData.Rows.Count, 1).End(xlUp).Row 循环处理每一行考勤记录 For i 2 To lastRow empId Trim(CStr(wsData.Cells(i, 2).Value)) empName Trim(CStr(wsData.Cells(i, 3).Value)) punchIn wsData.Cells(i, 4).Value 跳过空白记录打卡时间必须是有效时间 If empId And IsDate(punchIn) Then actualTime TimeValue(punchIn) 判断是否迟到 If actualTime standardTime Then 迟到分钟数 实际时间 - 标准时间转换为分钟 lateMins Round((actualTime - standardTime) * 24 * 60, 0) 用工号和姓名作为字典Key key empId | empName If dict.Exists(key) Then 已存在则累加次数和分钟数 arrData dict(key) arrData(0) arrData(0) 1 arrData(1) arrData(1) lateMins dict(key) arrData Else 第一次出现初始化数组 dict(key) Array(1, lateMins) End If End If End If Next i 新建结果工作表 Set wsResult ThisWorkbook.Sheets.Add(After:ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) wsResult.Name 迟到统计结果 写入标题 wsResult.Range(A1:D1) Array(工号, 姓名, 迟到次数, 迟到总分钟) wsResult.Range(A1:D1).Font.Bold True 写入字典中的汇总数据 Dim r As Long Dim k As Variant Dim parts As Variant Dim itemData As Variant r 2 For Each k In dict.Keys parts Split(k, |) itemData dict(k) wsResult.Cells(r, 1) parts(0) wsResult.Cells(r, 2) parts(1) wsResult.Cells(r, 3) itemData(0) wsResult.Cells(r, 4) itemData(1) r r 1 Next k 自动调整列宽 wsResult.Columns(A:D).AutoFit MsgBox 统计完成共有 dict.Count 名员工存在迟到记录。 End Sub这里最核心的逻辑是“字典汇总”。字典的Key是“工号|姓名”Value是一个数组保存迟到次数和迟到总分钟。每次循环判断打卡时间晚于09:00就更新这个数组。最后遍历字典写入结果表。这段代码有一个前提考勤明细表里没有重复的标题行日期列格式正常打卡时间是时间格式或可被TimeValue识别的字符串。如果你的数据没那么干净请看增强版。5.2 增强版按月份统计并输出迟到明细实际业务中考勤明细往往跨月混在一起而且打卡时间可能是文本格式日期也可能是“2025/3/5”这种带有斜杠的文本。增强版处理了这些情况并额外生成“迟到明细”工作表方便核对每一笔数据。Option Explicit Sub CountLateAttendanceEnhanced() Dim wsData As Worksheet Dim wsResult As Worksheet Dim wsDetail As Worksheet Dim lastRow As Long Dim i As Long Dim dict As Object Dim key As String Dim empId As String Dim empName As String Dim recordDate As Variant Dim punchIn As String Dim standardTime As Date Dim actualTime As Date Dim lateMins As Long Dim arrData As Variant Dim targetMonth As String Dim detailRow As Long 源数据工作表 Set wsData ThisWorkbook.Sheets(考勤明细) Set dict CreateObject(Scripting.Dictionary) 标准上班时间 standardTime TimeValue(09:00:00) 要统计的月份格式 yyyy-mm为空字符串则统计全部 targetMonth 2025-03 lastRow wsData.Cells(wsData.Rows.Count, 1).End(xlUp).Row 创建汇总结果工作表 Set wsResult ThisWorkbook.Sheets.Add(After:ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) wsResult.Name 迟到统计结果 wsResult.Range(A1:D1) Array(工号, 姓名, 迟到次数, 迟到总分钟) wsResult.Range(A1:D1).Font.Bold True 创建迟到明细工作表 Set wsDetail ThisWorkbook.Sheets.Add(After:wsResult) wsDetail.Name 迟到明细 wsDetail.Range(A1:E1) Array(日期, 工号, 姓名, 上班打卡, 迟到分钟) detailRow 2 For i 2 To lastRow empId Trim(CStr(wsData.Cells(i, 2).Value)) empName Trim(CStr(wsData.Cells(i, 3).Value)) recordDate wsData.Cells(i, 1).Value 兼容日期格式和文本格式 If IsDate(recordDate) Then recordDate CDate(recordDate) Else recordDate DateValue(Replace(CStr(recordDate), /, -)) End If 月份过滤指定了月份时只统计该月 If targetMonth Or Format(recordDate, yyyy-mm) targetMonth Then punchIn CStr(wsData.Cells(i, 4).Value) If empId And IsDate(punchIn) Then actualTime TimeValue(CDate(punchIn)) If actualTime standardTime Then lateMins Round((actualTime - standardTime) * 24 * 60, 0) key empId | empName If dict.Exists(key) Then arrData dict(key) arrData(0) arrData(0) 1 arrData(1) arrData(1) lateMins dict(key) arrData Else dict(key) Array(1, lateMins) End If 同步写入迟到明细 wsDetail.Cells(detailRow, 1) Format(recordDate, yyyy-mm-dd) wsDetail.Cells(detailRow, 2) empId wsDetail.Cells(detailRow, 3) empName wsDetail.Cells(detailRow, 4) Format(actualTime, hh:mm:ss) wsDetail.Cells(detailRow, 5) lateMins detailRow detailRow 1 End If End If End If Next i 写入汇总结果 Dim r As Long Dim k As Variant Dim parts As Variant Dim itemData As Variant r 2 For Each k In dict.Keys parts Split(k, |) itemData dict(k) wsResult.Cells(r, 1) parts(0) wsResult.Cells(r, 2) parts(1) wsResult.Cells(r, 3) itemData(0) wsResult.Cells(r, 4) itemData(1) r r 1 Next k wsResult.Columns(A:D).AutoFit wsDetail.Columns(A:E).AutoFit MsgBox 统计完成。汇总表迟到统计结果明细表迟到明细。 End Sub增强版的关键改动有三个一是用Format函数按月份过滤targetMonth改成自己想统计的月份即可二是对日期列做了兼容处理斜杠和横杠都能解析三是额外生成明细表方便和原始考勤记录逐条对照。这样即使统计结果有问题也能快速定位到具体某一天的数据。5.3 可复用函数计算迟到分钟数如果你的考勤表里还需要做更多分析可以把“判断迟到分钟”的逻辑抽成一个函数方便其他地方调用。 返回迟到分钟数不迟到返回0时间格式错误返回-1 Function CalculateLateMinutes(punchInTime As Variant, standardTime As Variant) As Long Dim actualTime As Date If Not IsDate(punchInTime) Then CalculateLateMinutes -1 Exit Function End If actualTime TimeValue(CDate(punchInTime)) If actualTime TimeValue(standardTime) Then CalculateLateMinutes Round((actualTime - TimeValue(standardTime)) * 24 * 60, 0) Else CalculateLateMinutes 0 End If End Function这个函数把“时间转日期类型”“与标准时间比较”“计算分钟差值”这三步封装在一起。调用方式很简单Sub TestLateMinute() Dim minutes As Long minutes CalculateLateMinutes(09:15:00, 09:00:00) Debug.Print minutes End Sub在VBA编辑器的立即窗口里你会看到输出15。这就是“9点15分打卡迟到15分钟”的计算结果。6. 运行宏与验证结果代码复制到VBA编辑器之后接下来就是运行和验证。打开Excel按AltF11进入VBA编辑器在左侧工程资源管理器中找到当前工作簿右键点击“Microsoft Excel 对象”或“模块”选择“插入”-“模块”。把代码粘贴进去然后按F5运行宏。如果代码里有多段Sub过程先把光标放在要执行的Sub过程内部再按F5。运行后Excel会自动新增两个工作表迟到统计结果和迟到明细。检查汇总表里的工号、姓名、迟到次数、迟到总分钟是否合理。不要只看总量要抽几个员工做对账。对账方法很简单人工抽查几个员工的迟到日期去“迟到明细”表里确认是否一致。比如张三在3月10日打卡时间是09:12那明细表里应该有张三四列值分别是2025-03-10、工号、张三、09:12:00、12。再看汇总表里张三的迟到总分钟是否包含了这12分钟。如果都能对上这个宏基本就可以放心用了。如果运行失败第一步应该看VBA编辑器里的报错信息。常见的有两种找不到工作表提示“下标越界”通常是因为代码里写的“考勤明细”和实际工作表名不一致。类型不匹配提示“类型不匹配”通常是某一行打卡时间不是时间格式或者日期列是空的。这两种情况都不需要重新让AI写一遍代码直接把具体报错信息反馈给WorkBuddy告诉它“提示类型不匹配出错行是在处理日期列时”它就能快速定位并修复。7. 常见问题与排查思路VBA宏在Excel里运行遇到的坑往往不在语法而在数据格式和Excel环境。下面是一份常见问题排查表。问题现象可能原因排查方式解决方案运行提示“下标越界”代码里的工作表名不存在检查代码中Sheets(考勤明细)是否与Excel实际表名一致修改代码里的工作表名为实际名称运行提示“编译错误”模块中已有重复的过程名查看模块里是否有同名的Sub或Function删除重复过程或改名后再运行统计结果全是0打卡时间是文本格式IsDate判断失败选中一列检查单元格格式看值的左上角是否有绿色三角在代码里用CDate转换或用增强版兼容文本时间统计结果缺少某员工工号列存在空值或格式不一致检查该员工工号是否带前导零或空格统一工号格式用Trim清理或让代码按“姓名”维度汇总结果表没有自动新建宏被禁用或代码未完整执行按F8逐步执行代码观察卡在哪一行启用宏或检查代码中创建工作表的语句重复运行后表越来越多每次运行都新建同名工作表查看代码里是否先删除旧表再新建在创建前加一段删除旧表的逻辑例如On Error Resume Next打卡时间显示为“1900-01-01 09:00”单元格里存的是日期时间值不是纯时间查看单元格格式代码里用Format(actualTime, hh:mm:ss)输出纯时间需要统计不同月份但代码写死月份targetMonth固定为某个值查看增强版代码里的targetMonth常量把targetMonth改成空字符串或在对话中让AI改成弹窗输入排查顺序建议是先看数据格式再看工作表名最后看代码报错位置。VBA的错误提示其实很明确关键是读懂它指向哪一行、哪一列、哪个对象。8. 最佳实践让WorkBuddy成为你的Excel开发搭子到这里考勤统计宏已经能跑起来了。但如果你想把WorkBuddy真正用起来而不是只写一个宏还需要养成几个习惯。8.1 用需求描述模板代替碎片化提问每次让WorkBuddy生成VBA代码都尽量按“表结构、统计规则、输出形式、边界条件”四段式描述需求。这个模板可以复制保存成自己的常用文本需要时替换里面的字段名和规则即可。一次描述清楚比来回追问十句更高效。请帮我写一个VBA宏。 数据源工作表“工作表名”第1行是标题数据从第2行开始。 列结构A列【字段】B列【字段】C列【字段】…… 统计规则【具体规则例如C列晚于09:00算迟到迟到分钟按差值取整】 输出形式【例如新建“结果”工作表第一行写标题从第二行写入结果】 边界条件【例如跳过空白行日期兼容文本格式工号可能是文本】8.2 小步迭代一次只改一个规则不要试图让WorkBuddy一次性解决所有问题。第一次对话只让它生成基础版本跑通了再叠加规则比如先统计迟到次数再加迟到分钟再加月份过滤再加明细表。每次只增加一个规则出问题时定位也更容易。8.3 在复制文件上测试不要直接生产VBA宏会修改工作簿结构尤其是代码里有新建工作表、删除工作表这类操作。在正式考勤表上直接跑宏一旦代码逻辑有误可能导致数据错乱。最佳实践是把考勤明细复制到新文件在副本上运行宏验证无误后再在正式表上使用。重要文件提前备份这是任何时候都不能省略的步骤。8.4 保留注释方便三个月后的自己AI生成的VBA代码通常没有太多注释或者注释写得比较通用。建议在关键逻辑附近补上注释比如“第4列是上班打卡时间”“标准上班时间为9点”。三个月后再看代码这些注释能帮你快速回忆起业务规则。如果你每次都用WorkBuddy也可以把注释规范写进Skill或需求描述里让AI生成时就自带中文注释。8.5 管理上下文避免上下文用量满了影响效果WorkBuddy的对话上下文是有限度的。如果一次对话中堆积了太多历史内容包括大量代码和报错信息后续生成的代码容易出现“逻辑混乱”或者“重复旧信息”。当发现WorkBuddy开始输出不相关内容或者上下文占用过高时最好的做法不是清空全部历史而是新开一个对话把当前的核心需求和已经确定的表结构重新描述一遍继续迭代。上下文精简之后生成质量会明显提升。8.6 对AI生成的代码做基本的代码审查AI生成代码不等于可以直接信任。对于一个VBA宏至少检查三个地方工作表名是否正确、循环的起始行是否是数据的第一行、结果写入时列位置是否对得上。这三处是VBA自动化最容易出错的地方。在考勤统计场景里数据错一位、漏一行结果就是完全不同的统计口径。9. 总结与下一步实践这篇文章用“考勤迟到统计”这个场景完整展示了WorkBuddy写VBA的实际路径从需求拆解到对话生成从代码运行到结果验证从问题排查到最佳实践。真正有价值的不是那一两段VBA代码而是“把业务需求翻译成AI能理解的描述”这个能力。代码可以靠AI生成但统计口径、边界情况、输出形式这些业务规则必须由你自己想清楚。下一步你可以从手头最繁琐的Excel任务开始练手。月考勤统计、薪资汇总、报销单明细拆分、报表格式整理这些都是WorkBuddy生成VBA的典型场景。先用考勤宏跑通全流程再逐步扩展到其他表格自动化任务。遇到不会写的代码不要急着搜论坛先尝试把需求完整说出来你会发现“靠嘴编程”并不是玩笑而是一种真实的新工作方式。
返回列表