Note: The other languages of the website are Google-translated. Back to English

如何显示下拉列表中的第一项而不是空白?

doc下拉列表默认为前1名

工作表中的下拉列表可以帮助我们简化数据输入,我们只需要选择项目而不用一一键入即可。 但是,有时,当您单击下拉列表时,它会跳到空白项,而不是第一个数据项,如下面的屏幕截图所示,这可能是由于删除了列表末尾的源数据所致。 对于每个空白数据验证单元格,您必须滚动回到长列表的顶部,这很令人讨厌。 在本文中,我将讨论如何始终显示下拉列表中的第一项。

在下拉列表中显示第一项,而不是使用数据验证功能显示空白

自动显示下拉列表中的第一项,而不是使用VBA代码显示为空白


箭头蓝色右气泡 在下拉列表中显示第一项,而不是使用数据验证功能显示空白


实际上,要完成这项工作,您只需要在创建下拉列表时应用特定的公式即可,请执行以下操作:

1。 选择要插入下拉列表的单元格,然后单击 数据 > 数据验证 > 数据验证,请参见屏幕截图:

doc下拉列表默认为前2名

2。 在弹出 数据验证 对话框中的 设置 标签,选择 名单 来自 部分,然后输入以下公式: = OFFSET(Sheet3!$ A $ 1,0,0,COUNTA(Sheet3!$ A:$ A)-1,1)来源 文本框,请参见屏幕截图:

备注:在此公式中, Sheet3 工作表是否包含源数据列表,并且 A1 是列表中的第一个单元格值。

doc下拉列表默认为前3名

3。 然后点击 OK 按钮,现在,当您单击下拉列表单元格时,第一个数据项始终显示在顶部,无论源数据末尾是否删除了单元格值,请参见屏幕截图:

doc下拉列表默认为前4名


箭头蓝色右气泡 自动显示下拉列表中的第一项,而不是使用VBA代码显示为空白

在这里,我还可以介绍一个VBA代码,当您单击数据验证单元格时,该代码可以帮助您自动显示下拉列表中的第一项。

1。 插入下拉列表后,选择包含下拉列表的工作表选项卡,然后右键单击以选择 查看代码 从上下文菜单转到 Microsoft Visual Basic应用程序 窗口,然后将以下代码复制并粘贴到模块中:

VBA代码:自动显示下拉列表中的第一个数据项:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby Extendoffice 20160725
    Dim xFormula As String
    On Error GoTo Out:
    xFormula = Target.Cells(1).Validation.Formula1
    If Left(xFormula, 1) = "=" Then
        Target.Cells(1) = Range(Mid(xFormula, 1)).Cells(1).Value
    End If
Out:
End Sub

doc下拉列表默认为前5名

2。 然后保存并关闭代码窗口,现在,当您单击下拉列表单元格时,将立即显示第一个数据项。


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能。 支持Office / Excel 2007-2019和365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能30天免费试用。 60天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (9)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
向下滚动选择单元格后,数字数据不是串联的,只有第一个单元格数据来选择 1,2 个不同的单元格,向下滚动值不会出现 1,2,3,4,5....... 只有第一个单元格值出现1,1,1,1,....
该评论由网站上的主持人最小化
选择您放置列表项的单元格
listitem 的范围是“Opleiding”
在您的 VBA 代码中:

selection.Value = Range("opleiding").Cells(2, 1)

结果是 listItem 的选定项目是“Opleiding”范围内的第二个项目
该评论由网站上的主持人最小化
如何设置数据验证列表,如果单元格中的下拉值被删除,单元格将自动显示默认值(即“-Select-”)?

例如,我有一个包含多个下拉列表的工作表,一旦打开工作表,我想显示默认值“-Select-”。 用户将从列表中选择会影响整个电子表格的计算结果的值。 用户可能会不小心“删除”单元格内容。 如果发生这种情况,而不是单元格变为空白,我希望单元格显示默认值“-Select-”。 这种情况发生在整个电子表格中的多个随机位置,而不仅仅是一个本地化位置。

到目前为止,我能够提出以下 VBA 代码,但我只知道如何在一个范围内应用这个概念,而不仅仅是包含下拉列表的单元格。 到目前为止,我编码的问题是该范围内的每个空白单元格都以“-Select-”结尾。

选项显式

私人子Worksheet_Change(按目标的ByVal目标)
Dim cel As Range
' 如果 Target.Cells.Count > 1 则退出 Sub
If Not Intersect(Target, Range("f2:p17")) 什么都没有
对于范围内的每个 cel("f2:p17")
Application.EnableEvents = False
If IsEmpty(cel.Value) Then cel.Value = "-Select-"
下一个
结束如果
Application.EnableEvents = True
END SUB
该评论由网站上的主持人最小化
您好!

如何设置数据验证列表,如果单元格中的下拉值被删除,单元格将自动显示默认值(即“-Select-”)?

例如,我有一个包含多个下拉列表的工作表,一旦打开工作表,我想显示默认值“-Select-”。 用户将从列表中选择会影响整个电子表格的计算结果的值。 用户可能会不小心“删除”列表的单元格内容。 如果发生这种情况,而不是单元格变为空白,我希望单元格显示默认值“-Select-”。 这种情况发生在整个电子表格中的多个随机位置,而不仅仅是一个本地化位置。

到目前为止,我能够找到以下 VBA 代码,但它仅将概念应用于一个范围,而不仅仅是包含下拉列表的单个单元格。 到目前为止,我编码的问题是该范围内的每个空白单元格都以“-Select-”结尾。 有些列表在范围内,但有些也散布在整个工作表中。 我当前的代码遇到的问题是该范围内的每个空白单元格都以“-Select-”结尾。 我试图让它在整个工作表中仅应用于下拉列表的单元格。

我正在努力实现的目标是可能的吗?

示例文件可以在这里找到:
https://drive.google.com/file/d/1VoO8VgFs3IJ0ALwqfk0i8gt69UE4vEKW/view?usp=sharing

示例代码:

选项显式

私人子Worksheet_Change(按目标的ByVal目标)
暗淡范围
' If Target.Cells.Count > 1 Then Exit Sub '关闭此选项允许同时选择和删除多个单元格
If Not Intersect(Target, Range("f2:p17")) 什么都没有
对于范围内的每个 cel("f2:p17")
Application.EnableEvents = False
If IsEmpty(cel.Value) Then cel.Value = "-Select-"
下一个
结束如果
Application.EnableEvents = True
END SUB


提前感谢!
该评论由网站上的主持人最小化
对我不起作用。 我不断收到一条错误消息,上面写着“这个公式有问题。没有尝试输入公式?当第一个字符是等号 (+) 或减号 (-) 时,Exel 认为这是一个公式......要解决此问题,请先键入撇号 (')..."
该评论由网站上的主持人最小化
再一次,你拯救了一天! 谢谢!
该评论由网站上的主持人最小化
更好但不完全。 使用 =OFFSET(Sheet3!$A$1,0,0,COUNTA(Sheet3!$A:$A)-1,1) 方法可以消除空白,但仍然会在很长列表的底部开始。 我希望它从列表的顶部开始。
该评论由网站上的主持人最小化
对于 VDA 代码,如何仅在某个单元格范围内显示下拉列表中的第一项? 先感谢您。
该评论由网站上的主持人最小化
嗨,Akrupa,为了解决您的问题,也许以下 VBA 代码可以帮助您:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'更新通过 Extendoffice 20211206
将 xFormula 调暗为字符串
将 xRg 调暗为范围
将 xStr 调暗为字符串
将 xIndex 调暗为整数
xIndex = 2 '此处表示原始数据的单元格编号,例如原始数据为A1:A10,要显示A2单元格值,请在此处写2。
出错时转出:
xFormula = Target.Cells(1).Validation.Formula1
If Left(xFormula, 1) = "=" Then
If Target.Value <> "" Then Exit Sub
xStr = Mid(xFormula, 2)
设置 xRg = Application.Range(xStr)
Target.Cells(1) = xRg.Cells(xIndex).Value
结束如果
日期:
END SUB
请尝试,希望对您有所帮助!
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点