跳至页脚内容
EXCEL 工具

如何在Excel中锁定行:您需要知道的一切

在Microsoft Excel中,将一列从A到Z排序只需三秒钟,一旦您知道点击哪里。 点击您要排序的列中的任意单元格。 这将根据该单列对整个数据范围进行排序,确保每一行保持完整,相邻列中的对应数据一起移动。请注意,不要仅选择单个列本身而不包括其他数据,因为这可能导致信息错位。

单点击操作大约处理80%的真实Excel排序任务。 其余20%就变得有趣:一次排序多个列,按行而不是按列进行字母排序,绕过阻止排序的合并单元格,选择不同字段的升序或降序,或在成百上千个Excel工作表中自动执行相同工作。 本指南涵盖每种可靠的字母顺序排序方法,包括排序对话框、右键上下文菜单、键盘快捷键、Excel 365中的动态SORT函数、VBA宏以及为使用IronXL的开发人员提供的编程选项。

大多数用户永远不需要离开图形用户界面。 前八种方法全部在Microsoft Excel内部运行,并为每一种方法提供逐步说明。 最后一节专为需要在应用程序或计划工作中排序电子表格的开发人员编写,这时像Iron Suite of .NET document tools这样的库派上用场。

如何在Excel中按字母顺序排序:每种用例的8种方法:图像1 - 突出显示的数据选项卡,红圈中的A→Z按钮

方法1:单击A→Z按钮(最快)

大多数办公人员使用此方法而从未学习过其他内容,对于大多数用例都能很好地工作。 默认行为是根据活动单元格所在的列对整个表进行排序。

翻译步骤

  1. 点击要排序的列中的任意单元格。 不要手动突出显示整个列。
  2. 转到功能区上的数据选项卡。

  3. 点击A→Z进行升序排序,或Z→A进行降序排序。 这将根据所选列按字母顺序排序。

Excel会自动检测数据的边界,识别第一行是否为标题行,并根据用户点击的列对表中的每一行进行排序。 名字、产品、城市,任何以文本为基础的信息在不到一秒钟内按字母顺序重新排序,相邻列中所有相关数据点与排序列一起移动。

如何在Excel中按字母顺序排序:每种用例的8种方法:图像2 - 排序前的客户姓名列和点击A→Z后的相同列

要理解的最重要的事情:点击单个单元格告诉Excel对该列所属的表进行排序。 如果通过点击顶部的列字母手动选择了整个列,Excel会显示一个"排序警告"对话框,询问是否扩展当前选择。 总是选择扩展选择以便行数据保持链接。 仅对一个列排序而不选择扩展会永远混乱记录,损害在进行一次Ctrl+Z撤销后很少能修复。

方法2:排序对话框(用于多列)

A→Z按钮仅基于一个列进行排序。 对于涉及多个列的更复杂的任务,如按部门首先排序,然后在每个部门内按姓氏排序,排序对话框是正确的工具。 它允许您根据多个标准或列进行排序,提供灵活和自定义的排序。 您可以在一次操作中定义跨多个列的自定义排序顺序。

翻译步骤

  1. 单击数据内的任意单元格。
  2. 转到数据 > 排序(或按Alt + A + S + S)。

  3. 在对话框中,从排序依据下拉菜单中选择要排序的列。

  4. 设置顺序为A到ZZ到A

  5. 点击添加层级以添加第二、第三或第四个排序标准。 每个层级可以独立按升序或降序排序列。

  6. 单击确定

如何在Excel中按字母顺序排序:每种用例的8种方法:图像3 - 显示两个层级的排序对话框,部门(A到Z)和姓氏(A到Z)

对话框右上角的我的数据有标题复选框应在第一行包含列标题时勾选。 Excel通常自动检测此项,但混合格式的标题行(例如标题中存储的日期或数字)有时会混淆自动检测。

一个常见的示例:销售团队希望将每个客户按区域分组,每个区域内的公司按字母顺序列出。 两个排序层级在一次操作中创建了这种布局。 同一对话框还有一个选项按钮,用于打开第二个排序选项对话框,用于区分大小写排序、自定义列表和方向设置。

方法3:右键上下文菜单

对于更愿意直接在单元格区域工作的用户而言,鼠标右键上下文菜单比去功能区提供了更短的路径。 此方法产生与功能区按钮相同的结果,但节省了几秒钟的鼠标移动时间。

翻译步骤

  1. 右键单击要排序列中的任意单元格。
  2. 在上下文菜单中悬停在排序上。

  3. 选择排序A到Z排序Z到A或单元格颜色或字体颜色选项之一。

如何在Excel中按字母顺序排序:每种用例的8种方法:图像4 - Excel中的右键上下文菜单展开了排序子菜单

右键菜单还会显示一些功能区隐藏的排序选项,包括"将选定单元格颜色放在顶部"和"将选定字体颜色放在顶部"。这些选项在处理颜色编码的电子表格并且目标是在按字母顺序排序之前将所有黄色突出显示行放在列表顶部时有帮助。

方法4:键盘快捷键

对于习惯于键盘操作的人来说,Excel具有一系列Alt键快捷键,可以触发排序而无需接触鼠标。

快捷键:

  • Alt + A + S + A:按A到Z排序(升序)
  • Alt + A + S + D:按Z到A排序(降序)
  • Alt + A + S + S:打开完整的排序对话框

按顺序按下这些键,而不是同时按下。 按Alt键后,查看功能区:每个选项卡和按钮显示一个小字母覆盖,激活它。 Excel称这些为"按键提示",它们让每个功能区命令都支持键盘访问。

如何在Excel中按字母顺序排序:每种用例的8种方法:图像5 - 按Alt键后功能区上显示的按键提示字母覆盖

对于每天早晨按字母顺序排序的日常报告等重复性任务,键盘路径比使用鼠标定位按钮快大约一倍。

方法5:通过筛选器下拉菜单排序

当工作表已经应用了筛选器,数据中的每个列标题中的筛选器箭头兼作排序控件。 筛选器组就位于数据选项卡内的排序按钮旁边。

翻译步骤

  1. 通过转到数据 > 筛选器(在功能区的筛选器组内)或按Ctrl + Shift + L来应用筛选器。

  2. 点击要按字母顺序排序的列标题中的小箭头。
  3. 在下拉菜单的顶部选择按A到Z排序按Z到A排序来点击排序并应用顺序。

这种方法有一个被低估的优点:筛选器下拉可以按颜色排序,按自定义列表排序,并在同一工作流程中进行筛选和排序。 对于一整天都在分析电子表格的分析师来说,将筛选器永久保持打开并从标题进行排序是最有效的方法。 它还提供了快速的视觉确认,确保标题位置正确位于排序记录上方。

方法6:SORT函数(Excel 365和Excel 2021)

较新的Excel版本引入了动态数组函数,包括SORT函数,它在不修改原始数据的情况下对数据按字母顺序排序。 结果是一个实时公式,只要源值更改时就会更新。

基本语法:

=SORT(array, [sort_index], [sort_order], [by_col])
=SORT(array, [sort_index], [sort_order], [by_col])
=SORT(array, [sort_index], [sort_order], [by_col])
$vbLabelText   $csharpLabel

要对单元格A2:A100中的姓名列表按字母顺序排序,并将排序答案放置在单元格C2中,输入以下公式:

=SORT(A2:A100)
=SORT(A2:A100)
The provided C# code appears to be a fragment or possibly a misinterpretation of an Excel formula rather than actual C# code. If you intended to provide a C# code snippet, please check and provide the correct C# code for conversion to VB.NET.
$vbLabelText   $csharpLabel

要创建相同列表的反向字母顺序版本:

=SORT(A2:A100, 1, -1)
=SORT(A2:A100, 1, -1)
The provided code appears to be a formula from a spreadsheet application like Excel, rather than C# code. If you have C# code that needs conversion to VB.NET, please provide that code.
$vbLabelText   $csharpLabel

相关函数SORTBY根据单独列中的值对一列按字母顺序排序。 要按部门对员工按字母顺序排序,其中姓名位于A列而部门位于B列:

=SORTBY(A2:A100, B2:B100)
=SORTBY(A2:A100, B2:B100)
The provided code appears to be an Excel formula rather than C# code. If you have C# code that you would like converted to VB.NET, please provide it, and I will be happy to assist with the conversion.
$vbLabelText   $csharpLabel

大优点:原始数据完全保留在原位。 排序版本是一个独立的实时视图。 当新名字被添加到源列表时,排序的输出会自动更新。 这对仪表板和实时数据分析报告来说是理想的。

缺陷:SORT和SORTBY仅在Excel 365和Excel 2021中存在。旧版本,包括Excel 2019和2016,会返回#NAME? 错误。

方法7:用于重复任务的VBA宏

任何每周对同一报告进行按字母顺序排列的人可以通过在当前工作簿中保存一个简短的VBA宏来自动完成整个工作。 这对于非开发人员最接近于写代码,而对于重复性工作它很快得到了回报。

翻译步骤

  1. 按Alt + F11打开Visual Basic Editor。
  2. 点击插入 > 模块
  3. 粘贴此代码以创建宏:
Sub AlphabetizeColumn()
    Range("A1").CurrentRegion.Sort _
        Key1:=Range("A2"), _
        Order1:=xlAscending, _
        Header:=xlYes
End Sub
Sub AlphabetizeColumn()
    Range("A1").CurrentRegion.Sort _
        Key1:=Range("A2"), _
        Order1:=xlAscending, _
        Header:=xlYes
End Sub
Sub AlphabetizeColumn()
    Range("A1").CurrentRegion.Sort( _
        Key1:=Range("A2"), _
        Order1:=xlAscending, _
        Header:=xlYes)
End Sub
$vbLabelText   $csharpLabel
  1. 关闭编辑器并通过开发人员 > 宏将宏分配给按钮或键盘快捷键。 要删除宏,稍后返回到相同对话框并从列表中将其删除。

每次宏执行时,从A1开始的数据按字母顺序根据第一列进行排序。 调整单元格引用以及列键以匹配工作表的实际布局。 这种方法对于一次性工作来说过于繁琐,但对于每日、每周或每月报告来说是一个真正的时间节省者。

方法8:按行而不是按列排序

大多数Excel排序是垂直进行的,但有时需要跨行从左到右排序数据。 排序对话框通过一个单选框支持此操作,大多数用户会忽略。

翻译步骤

  1. 突出显示要排序的行的当前单元格选择。
  2. 打开排序对话框(数据 > 排序)。
  3. 点击对话框右上角的选项按钮。

  4. 选择从左到右排序
  5. 点击确定,然后选择要排序的行并选择升序或降序。

这对于时间序列数据非常有用,每个列代表一个月份或一个类别,并且需要在行上进行重新组织而不是在列上。

常见问题及故障排除

Excel排序按可预测的方式失败。 以下是最经常出现的问题以及每个问题如何修复。

数字排序顺序错误。当数字按1, 10, 11, 2, 20, 3的顺序排列,而不是1, 2, 3, 10, 11, 20 时,值存储为文本而不是数字。 选择列,点击出现的小绿警告三角形,选择转换为数字。 然后重新排序。

相邻列不随着排序移动。这发生在排序前只选择了一个列,而不是列内的一个单元格。 Excel仅对当前选择进行排序,并留下其他列中的对应数据。 总是立即用Ctrl + Z撤销,点击表内的单个单元格,然后重新排序,以便每个相邻列中的相关数据随着排序记录一起移动。

合并的单元格阻止排序。Excel不允许对包含合并单元格的范围进行排序,会返回错误"此操作需要合并单元格具有相同尺寸"。取消合并范围内的任何合并单元格(主页 > 合并和居中 > 取消合并单元格),排序,并根据需要重新应用格式。

标题被包含在排序中。如果列标题被排序到数据中,Excel未检测到标题行。 打开排序对话框,并在排序前勾选我的数据有标题,以便标题保持在正确位置。

隐藏行被重新排序。即使隐藏的行不可见,它们也会参与排序,这可能导致混乱的结果。 如果数据必须保留在特定过滤视图中,请在排序前显示所有内容(Ctrl + A,然后格式 > 取消隐藏行)。

前导空格破坏字母顺序。以" Smith"而不是"Smith"开头的名称在所有未空格的名称之前排序,因为空格字符的ASCII值低于字母。 在辅助列(原始列旁边的单独列)中应用TRIM函数,将结果粘贴回作为值,删除辅助列,然后排序。

非字母序列表的自定义排序顺序。按字母顺序对工作日名称进行排序后会返回Friday, Monday, Saturday, Sunday, Thursday, Tuesday, Wednesday这不太可能是任何人想要的。 打开排序对话框,点击顺序下拉菜单,选择自定义列表,然后选择星期几。 Excel默认包含几个自定义列表,并且可以保存自定义排序以供在其他工作簿中将来使用。

区分大小写排序。默认情况下Excel会忽略大小写。 要强制区分大小写排序(即Apple在apple之前),打开排序对话框,点击选项,并勾选区分大小写

Excel忽略重音字符。对名为Élise、Ana和Ömer的列表进行排序可能会根据区域设置产生意外结果。 验证文件的语言环境在文件 > 选项 > 语言下,并考虑如果排序需要遵循特定国家的排序规则则暂时更改系统语言环境。

对于开发人员:在代码中对Excel文件按字母顺序排序

以上所有内容对非开发人员来说已经足够。 本节余下部分是为需要在应用程序、后台工作或自动化管道中排序电子表格的工程师编写的,在这些情况下手动打开Microsoft Excel不可行。

IronXL是一个.NET库,可以以编程方式读取、写入和操作Excel文件。 它不需要Microsoft Office或Excel Interop,这意味着它可以在服务器、Docker容器和云功能中顺利运行。 按字母顺序对一列进行排序需要三行代码:

using IronXL;
WorkBook workbook = WorkBook.Load("employees.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();
sheet["A2:A100"].SortAscending();
workbook.SaveAs("employees-sorted.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Load("employees.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();
sheet["A2:A100"].SortAscending();
workbook.SaveAs("employees-sorted.xlsx");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Load("employees.xlsx")
Dim sheet As WorkSheet = workbook.WorkSheets.First()
sheet("A2:A100").SortAscending()
workbook.SaveAs("employees-sorted.xlsx")
$vbLabelText   $csharpLabel

这完成了整个工作。 相同的模式可以扩展到成千上万个在批处理中处理的文件、夜间运行的计划任务以及任何需要在不进行人工干预的情况下重新组织Excel数据的工作流程。 反向字母顺序在同一范围上使用SortDescending()。

最后说明

在Excel中按字母顺序排序是那些看似简单的任务之一,直到一个电子表格无法正确排序,此时它会成为工作日中最令人沮丧的五分钟。 几乎每个问题都可以追溯到上面涵盖的一个问题:合并单元格、混合数据类型、前导空格,或者在点击排序之前选择过多(或过少)。

对于绝大多数的办公工作,数据选项卡上的A→Z按钮是正确的方法。 对于多列排序,使用排序对话框。 对于可重复的工作,使用一个简短的VBA宏。 对于自动化、大规模或基于服务器的工作流程,IronXL可以从C#、F#或VB.NET中通过几行代码处理相同的操作。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我