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 for Applications 窗口,然後將以下代碼複製並粘貼到模塊中:

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-2021 和 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-”結尾。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
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

示例代碼:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
暗淡範圍
' 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 = 中 (xFormula, 2)
設置 xRg = Application.Range(xStr)
Target.Cells(1) = xRg.Cells(xIndex).Value
如果結束
日期:
END SUB
請嘗試,希望對您有所幫助!
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護