跳至页脚内容
EXCEL 工具

如何在Excel中突出显示重复项:完整的分步指南

由团队撰写于 Iron Software

Excel中的下拉列表是保持数据输入一致性和准确性最实用的工具之一。 与依赖手动数据输入的方式不同,任何人都能在单元格中输入任何内容,而下拉列表限制了用户只能输入一组已批准的选项。 下拉列表有助于确保输入单元格的仅是有效数据,从而最大限度地减少数据输入过程中的错误,并消除事后修复不一致值的需求。 过程很简单:选择单元格,点击箭头,选择一个选项。

Microsoft Excel中的数据有效性工具支持每个下拉列表。数据有效性功能将单元格条目限制为预定义列表,这是可用的最受欢迎的数据有效性工具选项之一。 下拉列表通过组织数据和限制每个单元格的输入数量来改善整体用户体验,这对于如订单输入或HR表单等重复性任务尤其有价值,其中单元格中始终应仅含有效数据。 使用下拉列表可以简化数据输入过程,使用户操作更快更高效。

本指南涵盖了在Excel中创建下拉列表的所有方法:一个直接作为逗号分隔列表的简单下拉列表,引用单元格范围或命名范围作为源数据,构建一个能自动更新的动态下拉列表,创建依赖下拉列表,添加输入消息和错误警报设置,以及管理现有列表。 在.NET中生成Excel文件的开发人员将在结尾找到一节内容,展示如何通过IronXL以编程方式处理数据验证。

方法1:从手动输入列表创建简单下拉列表

最佳用途:短、固定的列表,几乎不变。

要在Excel中创建下拉列表,请选择您想要列表的单元格,进入数据选项卡,点击数据有效性,在允许列表框中选择列表,然后指定源范围或手动输入以逗号分隔的项目。 可以在Excel中手动输入项目或引用单元格范围来创建下拉列表。

步骤:

1.选择您希望创建下拉列表的单元格或单元格范围。 2.点击功能区中的数据选项卡。 3.在数据工具组中,点击数据验证。 数据验证对话框打开。 4.在允许框中,从下拉菜单中选择列表。 5.在单元格下拉复选框出现。 必须勾选单元格内下拉选项来启用单元格中的下拉菜单。 6.点击源框并输入您的选项,逗号分隔,例如:Electronics,Furniture,Software,Services

  1. 点击OK。

单元格中现在出现一个小箭头。 点击它打开显示所有下拉选项的下拉菜单。 用户可以复制一个带有下拉菜单的单元格并粘贴到其他地方,保留下拉功能,这是将相同列表快速应用于其他单元格的好方法。

在逗号分隔列表后避免空格,除非您希望在标签中有一个前置空格。 "North America, EMEA"将显示" EMEA"前置空格。

截图建议:显示启用标签的数据验证对话框,允许框中的列表以及源框中的逗号分隔列表。 目标单元格应在背景中选择使用订单表单演示文件。

方法2:从单元格范围创建下拉列表

最佳用途:包含许多项目的列表,或在多个单元格中重复使用相同源数据时。

引用单元格范围作为源数据比输入项目更灵活。 当您更新源范围时,所有连接单元格中的下拉选项也会更新。

1.在一列中输入您的列表项,最好在单独的工作表上(例如名为"Lists"的工作表上)。 2.选择您要创建下拉菜单的单元格。 3.进入数据选项卡 > 数据工具组 > 选择数据验证。 4.在数据验证窗口中,在设置选项卡上,在允许框中选择列表。 5.点击源框并选择列表工作表上的单元格范围。 Excel会自动输入范围引用,例如=Lists!$A$3:$A$7。

  1. 单击确定

验证标准现在限制条目仅来自该源范围的有效数据。 左上方的名称框显示当前单元格地址,并帮助您验证选择了正确的引用。

在源范围中总是使用带$符号的绝对引用。 使用=A3:A7而不含美元符号的话,如果在其上方插入行可能会改变。

屏幕截图建议:显示源框中有范围引用的数据验证对话框,且底部可见Lists工作表标签。 使用订单表单演示文件。

方法3:使用命名范围作为来源

最佳用途:用于多个位置的下拉列表,或当源数据位于不同工作表时。

命名范围为一组单元格分配一个易记的名称,您可以在源框中使用它,而不是单元格地址。

1.选择您的列表项,然后单击名称框并输入一个名称(例如ProductCategories),然后按Enter键。 2.选择您希望创建下拉菜单的单元格,进入数据选项卡 > 数据验证。 3.在设置选项卡中,在允许框中选择列表,然后在源框中输入=ProductCategories。 4.点击确定。

这样可以更容易地管理验证列表。 结合使用INDIRECT函数(将在方法5中介绍),命名范围也可以启用依赖下拉列表。

屏幕截图建议:显示输入了范围名称的名称框,以及显示=ProductCategories的数据验证源框。

方法4:添加输入消息和错误警报

最佳用途:由其他人填写的共享工作簿或表格。

用户可以添加输入消息,当用户点击带有下拉列表的单元格时显示,以指导他们选择。 Excel允许在数据验证对话框中配置自定义错误消息。

输入消息:

1.打开数据选项卡 > 数据验证。 2.在数据验证对话框中点击输入消息选项卡。 3.勾选选择单元格时显示输入消息,并在下方字段中输入标题和消息。 4.点击确定。

当有人点击该单元格时,输入消息会作为工具提示出现,指导他们的选择。

错误警报:

1.点击数据验证对话框中的错误警报标签。 2.勾选显示错误警报复选框(也标记为输入无效数据后错误警报或无效数据后警报)。 3.选择一种样式:Stop会阻止无效数据,Warning允许但会有提示,Information仅显示注释。 4.输入标题和错误消息。

  1. 点击确定。

当在允许列表之外输入无效数据时,会触发错误警报。 对于严格的表格,使用Stop以便仅接受有效数据。 显示错误警报设置与输入消息标签是独立控制的,因此可以启用其中一个而不启用另一个。

如果您希望允许空白单元格,请在设置选项卡上勾选忽略空白复选框。 这可以防止在空单元格上触发错误警报。

屏幕截图建议:显示数据验证对话框的错误警报菜单,选择Stop并输入自定义错误消息。 使用HR表单演示文件。

方法5:建立依赖下拉列表

最佳用途:多级选择,其中第二个列表依赖于第一个列表。

Excel中的依赖下拉列表将两个或多个下拉列表链接在一起,其中第一个列表中的选择控制第二个列表的可用选项。例如,如果用户从第一个下拉列表中选择Pizza,第二个下拉列表可以填写特定的披萨项目,而选择Chinese则会在第二个列表中显示中国菜。创建依赖下拉列表可以通过确保用户基于其先前的选择仅看到相关选项来提高数据输入效率和准确性。

设置:

1.在列中创建您的源数据,每个类别用一列。 每列的标题行必须与第一个下拉列表中出现的内容完全匹配。 2.使用名称框命名每列项目,完全匹配第一个列表选项(例如将Pizza列命名为"Pizza",将Chinese列命名为"Chinese")。 3.在列A中使用方法1或方法2创建第一个下拉列表。 4.选择第二个下拉菜单的单元格(列B)。 进入数据选项卡 > 数据验证列表选择设置选项卡中,在允许框中选择列表,在源框中输入=INDIRECT(A4)。

  1. 点击确定

当在第一个下拉列表中选择一个值时,INDIRECT查找同名的命名范围,并将其用作第二个下拉的选择列表。 第二个单元格的验证标准根据第一个选择动态更新。

屏幕截图建议:显示依赖下拉演示文件,列A中选择了Pizza,并且在列B的下拉菜单中可见披萨菜单项。 菜单列表表单应在背景中可见。

方法6:创建动态下拉列表

最佳用途:随时间推移生长并需要在添加新项目时自动更新的列表。

您可以使用OFFSET函数在Excel中创建动态下拉列表,该函数允许在将新项目添加到源范围时列表自动更新。 使用excel表作为下拉列表的源,允许当添加新行时其自动扩展,使其成为动态列表的很好的选择。

选项A:Excel表

1.选择您的源项并按Ctrl + T(从插入选项卡)创建一个excel表。 选择表样式并确认头行选项。 2.在数据验证源框中引用表列:=Table1[Category]。

当在excel表中添加新行时,整个下拉选项会自动更新,而无需对验证规则进行更改。

选项B:OFFSET公式

要创建动态下拉列表,您可以使用公式=OFFSET(Sheet2!$A$1,0,0,COUNTA(Sheet2!$A:$A),1),该公式根据源列中非空单元格的数量调整范围。

在数据验证窗口的源框中输入此内容。 随着项目被添加到源列,源范围扩展,并且下拉选项会自动更新。

屏幕截图建议:显示输入了OFFSET公式的数据验证源框,并显示Lists工作表。 使用订单表单演示文件。

方法7:添加、编辑和删除下拉项目

管理源范围内的项目:

要向现有下拉列表中添加项目,请转到包含列表的原始工作表,在要插入的下方单元格上右键单击,选择插入,选中"单元格下移",然后输入新项目。 下拉选项会自动更新。 在同一工作表或跨工作表中应用相同的步骤,只要源范围覆盖新的单元格。

删除下拉列表:

要在Excel中删除下拉列表,请选择带有下拉箭头的单元格,转到数据选项卡,单击数据验证,然后单击删除(全部清除)以去除列表。若要只清除单元格值而不移除验证规则,请选择该单元格并按删除键。 要彻底移除规则,请在数据验证窗口中使用清除全部。

请注意,如果您只想按删除键清除单元格内容而保留验证,可以安全这么做。 即便内容清除后,验证列表仍保留在单元格上。

密码保护验证的单元格:

要阻止其他人编辑您的下拉设置,转到审阅 > 保护工作表并输入密码(对工作表进行密码保护)。 用户仍然可以使用下拉菜单输入数据,但不能修改验证标准或移除规则。

屏幕截图建议:显示数据验证对话框及可见的清除全部按钮,准备移除规则。 同时显示保护工作表对话框,并激活密码字段。

常见问题及故障排除

下拉箭头未出现

确认单元格下拉选项已在设置选项卡中打勾。 如果未勾选,验证仍然有效但单元格中不会显示箭头。 这是下拉菜单似乎消失时经常被忽视的设置。

错误警报对有效数据触发

这通常是格式不匹配问题。 检查源框中用于逗号分隔的列表条目周围是否有空格,或检查源数据是否包含空白单元格或不一致的大写。 验证标准精确比较值。

动态列表未自动更新

如果源是静态单元格范围,在该范围之外添加的新项目将不会出现。 切换到excel表或使用OFFSET公式,以便源范围自动扩展。 该数据验证列表必须引用包括所有当前和未来项目的范围。

依赖列表显示引用错误

这意味着命名范围与第一个下拉选择不完全匹配。 打开公式 > 名称管理器并确认名称与第一个下拉列表中的选项完全匹配,包括大写。 任何不匹配都会导致INDIRECT在使用依赖规则的所有单元格中返回空白或错误。

快速参考:下拉列表方法

目标 在哪里 关键设置
简单下拉列表 数据选项卡 > 数据验证 > 设置选项卡 源框:逗号分隔列表
从单元格范围下拉 数据选项卡 > 数据验证 > 设置选项卡 源框:=Sheet!$A$3:$A$7
命名范围源 数据选项卡 > 数据验证 > 设置选项卡 源框:=RangeName
输入消息 数据验证 > 输入消息选项卡 标题和消息
错误警报 数据验证 > 错误警报选项卡 样式:Stop,Warning,Info
动态列表(表) 插入选项卡 > 表格,然后表列引用 源框:=Table1[Column]
动态列表(OFFSET) 数据验证源框 =OFFSET(Sheet2!$A$1,0,0,COUNTA(Sheet2!$A:$A),1)
依赖下拉 数据验证 > 设置选项卡 源框:=INDIRECT(A4)
添加项目到列表 右键单击源单元格 > 插入 > 单元格下移 在新单元格中键入项目
删除下拉 数据选项卡 > 数据验证 > 清除全部 从所有单元格中移除规则

针对开发者:使用IronXL添加数据验证

如果您的.NET应用程序生成包含表单或数据输入模板的Excel工作簿,IronXL允许您在没有Microsoft Office的服务器上以C#编程方式应用数据验证下拉列表。 推荐的方法是AddFormulaListRule(),它将单元格范围作为源来引用,并避免了传入的列表项当作字符串直接传入时受限于255字符的限制。

using IronXL;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet formSheet = workBook.DefaultWorkSheet;
formSheet.Name = "Order Form";

// Headers
formSheet["A1"].Value = "Order ID";
formSheet["B1"].Value = "Product Category";
formSheet["C1"].Value = "Region";

// Write source list values to a Lists sheet
WorkSheet listSheet = workBook.CreateWorkSheet("Lists");
string[] categories = { "Electronics", "Furniture", "Software", "Office Supplies", "Services" };
string[] regions = { "North America", "EMEA", "APAC", "Latin America", "Middle East" };

for (int i = 0; i < categories.Length; i++)
{
    listSheet[$"A{i + 1}"].Value = categories[i];
    listSheet[$"B{i + 1}"].Value = regions[i];
}

// Apply drop-down validation referencing the Lists sheet source range
var categoryRule = formSheet.DataValidations.AddFormulaListRule(
    "B2:B20",           // cell range to validate
    "Lists!$A$1:$A$5"  // source range on Lists sheet
);
categoryRule.ShowErrorBox = true;
categoryRule.ErrorBoxTitle = "Invalid Category";
categoryRule.ErrorBoxText = "Please select a valid category from the drop-down list.";
categoryRule.ShowPromptBox = true;
categoryRule.PromptBoxTitle = "Product Category";
categoryRule.PromptBoxText = "Choose a product category from the drop-down.";

var regionRule = formSheet.DataValidations.AddFormulaListRule(
    "C2:C20",
    "Lists!$B$1:$B$5"
);
regionRule.ShowErrorBox = true;
regionRule.ErrorBoxTitle = "Invalid Region";
regionRule.ErrorBoxText = "Select a valid region from the drop-down list.";

workBook.SaveAs("order-form-validated.xlsx");
using IronXL;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet formSheet = workBook.DefaultWorkSheet;
formSheet.Name = "Order Form";

// Headers
formSheet["A1"].Value = "Order ID";
formSheet["B1"].Value = "Product Category";
formSheet["C1"].Value = "Region";

// Write source list values to a Lists sheet
WorkSheet listSheet = workBook.CreateWorkSheet("Lists");
string[] categories = { "Electronics", "Furniture", "Software", "Office Supplies", "Services" };
string[] regions = { "North America", "EMEA", "APAC", "Latin America", "Middle East" };

for (int i = 0; i < categories.Length; i++)
{
    listSheet[$"A{i + 1}"].Value = categories[i];
    listSheet[$"B{i + 1}"].Value = regions[i];
}

// Apply drop-down validation referencing the Lists sheet source range
var categoryRule = formSheet.DataValidations.AddFormulaListRule(
    "B2:B20",           // cell range to validate
    "Lists!$A$1:$A$5"  // source range on Lists sheet
);
categoryRule.ShowErrorBox = true;
categoryRule.ErrorBoxTitle = "Invalid Category";
categoryRule.ErrorBoxText = "Please select a valid category from the drop-down list.";
categoryRule.ShowPromptBox = true;
categoryRule.PromptBoxTitle = "Product Category";
categoryRule.PromptBoxText = "Choose a product category from the drop-down.";

var regionRule = formSheet.DataValidations.AddFormulaListRule(
    "C2:C20",
    "Lists!$B$1:$B$5"
);
regionRule.ShowErrorBox = true;
regionRule.ErrorBoxTitle = "Invalid Region";
regionRule.ErrorBoxText = "Select a valid region from the drop-down list.";

workBook.SaveAs("order-form-validated.xlsx");
Imports IronXL

Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim formSheet As WorkSheet = workBook.DefaultWorkSheet
formSheet.Name = "Order Form"

' Headers
formSheet("A1").Value = "Order ID"
formSheet("B1").Value = "Product Category"
formSheet("C1").Value = "Region"

' Write source list values to a Lists sheet
Dim listSheet As WorkSheet = workBook.CreateWorkSheet("Lists")
Dim categories As String() = {"Electronics", "Furniture", "Software", "Office Supplies", "Services"}
Dim regions As String() = {"North America", "EMEA", "APAC", "Latin America", "Middle East"}

For i As Integer = 0 To categories.Length - 1
    listSheet($"A{i + 1}").Value = categories(i)
    listSheet($"B{i + 1}").Value = regions(i)
Next

' Apply drop-down validation referencing the Lists sheet source range
Dim categoryRule = formSheet.DataValidations.AddFormulaListRule(
    "B2:B20",           ' cell range to validate
    "Lists!$A$1:$A$5"   ' source range on Lists sheet
)
categoryRule.ShowErrorBox = True
categoryRule.ErrorBoxTitle = "Invalid Category"
categoryRule.ErrorBoxText = "Please select a valid category from the drop-down list."
categoryRule.ShowPromptBox = True
categoryRule.PromptBoxTitle = "Product Category"
categoryRule.PromptBoxText = "Choose a product category from the drop-down."

Dim regionRule = formSheet.DataValidations.AddFormulaListRule(
    "C2:C20",
    "Lists!$B$1:$B$5"
)
regionRule.ShowErrorBox = True
regionRule.ErrorBoxTitle = "Invalid Region"
regionRule.ErrorBoxText = "Select a valid region from the drop-down list."

workBook.SaveAs("order-form-validated.xlsx")
$vbLabelText   $csharpLabel

IronXL运行在.NET 6及之后的版本中,与Windows,Linux,macOS,Docker和Azure兼容。 完整的细节请参见DataValidation API参考

入门:通过NuGet使用Install-Package IronXL.Excel安装。 免费试用可享有30天的全部功能且不需要信用卡。

进一步阅读:

总结

将下拉列表引入excel单元格中一旦您知道去哪里,仅需不到一分钟。 要快速以单元格中的下拉显示多个固定选择,将一个逗号分隔列表直接输入数据验证对话框中的源框是最快的方法。 对于需要随时间扩展或更新的内容,引用命名范围或excel表提供了下拉选项的增长空间。 数据验证列表保持与其源数据连接,因此将新项目添加到源范围时,它自动在每个连接的单元格中可用。

当多人填写同一张电子表时,输入消息选项卡上的输入消息在他们做出选择之前指导他们,而错误警报选项卡上的Stop级别错误警报确保无效数据录入不会出现在验证单元格中。 与INDIRECT和命名范围一起构建的依赖下拉列表,使第一个下拉列表自动控制第二个列表,保持选项集的相关性而不需要用户额外工作。

对于需要从.NET应用程序生成经过验证的Excel文件的开发者,IronXL涵盖完整的数据验证工作流:源范围,错误警报,输入提示和公式列表规则,所有这些都无需在服务器上安装Office。 开始免费试用以在您的项目中测试数据验证。

在本指南未覆盖的下拉场景? 在下方留言,或访问Iron Software博客以获取更多关于Excel数据输入、验证和电子表格自动化的指南。

Curtis Chau
技术作家

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

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

钢铁支援团队

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