拆分混存学校站点与学生编号的Excel列
解决方案
方法一:Excel公式法(新手友好,快速上手)
- 插入新列:在Name列右侧新增一列,命名为
School。 - 填充站点信息:假设Student Number列是A列,School列是C列,在C2单元格输入公式:
公式逻辑:如果A列单元格以=IF(LEFT(A2,5)="Site:",A2,C1)Site:开头,就把该内容填入当前C列单元格;否则继承上一行的站点信息。下拉公式覆盖所有行。 - 清理无效行:选中A列,启用筛选功能,筛选出含
Site:的行并删除;再筛选Name列的NAN/Nan行,同样删除。
方法二:Power Query法(批量处理高效)
- 导入数据到Power Query:选中数据区域,点击「数据」→「从表格/区域」(Excel 2016及以上版本),确认表头存在。
- 新建站点列:在编辑器中点击「添加列」→「自定义列」,输入公式并命名为
School:= if Text.StartsWith([Student Number], "Site:") then [Student Number] else null - 填充站点信息:选中
School列,点击「转换」→「填充」→「向下填充」,让学生行自动继承上方站点信息。 - 清理无效行:筛选
Student Number列,取消勾选含Site:的选项,删除这些行;最后点击「关闭并上载」,处理后的数据会导出到新工作表。
方法三:VBA宏(适合重复处理同类数据)
按下Alt+F11打开VBA编辑器,插入模块,粘贴以下代码后运行宏,自动完成所有处理:
Sub SplitSchoolInfo() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim currentSchool As String Set ws = ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row '插入School列 ws.Columns("C").Insert ws.Cells(1, "C").Value = "School" currentSchool = "" For i = 2 To lastRow If Left(ws.Cells(i, "A").Value, 5) = "Site:" Then currentSchool = ws.Cells(i, "A").Value ws.Cells(i, "C").Value = currentSchool Else ws.Cells(i, "C").Value = currentSchool End If Next i '删除包含Site:的行 For i = lastRow To 2 Step -1 If Left(ws.Cells(i, "A").Value, 5) = "Site:" Then ws.Rows(i).Delete End If Next i '删除Name列为NAN/Nan的行 For i = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row To 2 Step -1 If UCase(ws.Cells(i, "B").Value) = "NAN" Then ws.Rows(i).Delete End If Next i End Sub
内容的提问来源于stack exchange,提问作者Andrew Smith
相关产品推荐
相关产品推荐

