gpt4 book ai didi

Excel 数据验证 - 填充下拉列表

转载 作者:行者123 更新时间:2023-12-04 20:55:27 24 4
gpt4 key购买 nike

我在 Sheet1 上有这个主表:
工作语言名称
1 英国约翰
2 法国弗兰克
3 西类牙川
4 英语詹姆斯
5 英语约翰

我设法在语言列上设置数据验证,因此有一个包含语言的下拉列表。但是,我想在名称列中有一个下拉菜单,任何人都说从 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

关于Excel 数据验证 - 填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48812920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com