簡體   English   中英

Excel 數據驗證 - 填充的下拉列表

[英]Excel data validation - populated drop-down list

我在 Sheet1 上有這個主表:
工作語言名稱
1 英國約翰
2 法國弗蘭克
3 西班牙傳
4 英國詹姆斯
5 英國約翰

我設法在語言列上設置了數據驗證,因此有一個包含語言的下拉列表。 但是,我希望在 Name 列中有一個下拉菜單,任何說 Sheet2 表中選定語言的人。

Sheet2 看起來像這樣 - 有語言和名稱:

語言名稱
英國約翰
英語詹姆斯
法蘭克法蘭克
西班牙傳
西班牙人亞歷杭德羅

如您所見,重點是每種語言都有多個人。

有沒有辦法在下拉菜單中只顯示所選語言的人?

像這樣:選擇語言 -> 在下拉列表中只顯示說該語言的人

感謝您的幫助!

在 VBA 代碼編輯器 (ALT+F11) 中添加連接到事件 CHANGE 的工作表函數

下面是 VBA 程序的代碼。 當您更改語言時,程序就會啟動。 它使用 sheet2 中的人員列表更改所有數據驗證列表。

如果程序在您的機器上正常運行,請給予支持。

Option Base 1

Private Sub Worksheet_Change(ByVal Target As Range)
Dim arrTemp() As Variant
Dim intNumberOfRowsSheet1 As Integer, intNumberOfRowsSheet2 As Integer
Dim i As Integer, j As Integer
Dim strCurrentLanguage As String
Dim wksSheet1 As Worksheet, wksSheet2 As Worksheet
Dim intNumberOfPersons As Integer

 Set wksSheet1 = Worksheets("sheet1")
 Set wksSheet2 = Worksheets("sheet2")

intNumberOfRowsSheet1 = wksSheet1.Range("a1").CurrentRegion.Rows.Count  'number of rows in sheet1
intNumberOfRowsSheet2 = wksSheet2.Range("a1").CurrentRegion.Rows.Count 'number of rows in sheet2

 If Target.Column = 2 Then     'execute when value in column 2 (language) changes

   For i = 2 To intNumberOfRowsSheet1
      strCurrentLanguage = Cells(i, 2).Value  
      intNumberOfPersons = 0
      ReDim arrTemp(1)
        For j = 2 To intNumberOfRowsSheet2
          If wksSheet2.Cells(j, 1) = strCurrentLanguage Then
            intNumberOfPersons = intNumberOfPersons + 1
            ReDim Preserve arrTemp(intNumberOfPersons)
            arrTemp(intNumberOfPersons) = wksSheet2.Cells(j, 2)
          End If
        Next j
      If intNumberOfPersons = 0 Then arrTemp(1) = "no persons speaks " & wksSheet1.Cells(i, 2)
      With wksSheet1.Cells(i, 3).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
         Operator:=xlBetween, Formula1:=Join(arrTemp, ",")
      End With
   Next i
 End If
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM