我在excel中创建了命名范围,范围的命名基于sheet2上的键值。
现在,我在另一个sheet1上创建了下拉列表,其公式公式为INDIRECT,再次基于sheet1上的键。如何将空白/特殊符号添加到下拉列表?我无法在工作表上的已排序项目之间添加空单元格。
工作表2:
我有2个基于MAT / AE列的命名范围,第一个是C2:C4的范围,下一个是C5:C6。
在这里有Sheet1,我使用数据验证,使用公式INDIRECT连接MAT1&AE11,并且我具有基于Sheet2范围的值。
所以我的问题是,如何在此列表中添加空白/特殊字符?
范围代码:
Sub Start()
lf_index_row = 1
lf_name_space_row = 2
gf_namespace = ""
Do
lf_index_row = lf_index_row + 1
lf_material = Sheets(gc_data).Cells(lf_index_row, 1)
lf_location = Sheets(gc_data).Cells(lf_index_row, 2)
gf_new_namespace = "X" & lf_material & lf_location
If gf_new_namespace = "X" Then
If gf_namespace = "" Then
End
Else
'create namespace
Set lf_range = Range(Cells(lf_start_number, 3), Cells(lf_end_number, 3))
lf_range.Select
Range(Cells(lf_start_number, 3), Cells(lf_end_number, 3)).Select
ActiveWorkbook.Names.Add Name:=gf_namespace, RefersTo:=lf_range
End
End If
End If
If gf_namespace <> gf_new_namespace Then
If gf_namespace = "" Then
'initialize newnamespace
gf_namespace = gf_new_namespace
lf_start_number = lf_index_row
lf_end_number = lf_index_row
Else
'create namespace
Set lf_range = Range(Cells(lf_start_number, 3), Cells(lf_end_number, 3))
lf_range.Select
Range(Cells(lf_start_number, 3), Cells(lf_end_number, 3)).Select
ActiveWorkbook.Names.Add Name:=gf_namespace, RefersTo:=lf_range
'initialize newnamespace
gf_namespace = gf_new_namespace
lf_start_number = lf_index_row
lf_end_number = lf_index_row
End If
Else
lf_end_number = lf_index_row
End If
Loop
End Sub
间接公式:
名字范围的定义:
最佳答案
如果该列表位于Range("A1:A10")
中,这就是仅包含一个空位的验证列表的方法:
使用以下代码:
Sub TestMe()
Dim list1 As Range
Dim validationFormula As String
Set list1 = Range("A1:A10")
Dim myCell As Range
For Each myCell In list1
If Not IsEmpty(myCell) Then
validationFormula = validationFormula & myCell.Value2 & ","
End If
Next
validationFormula = validationFormula & Chr(160)
With Range("B5").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=validationFormula
.IgnoreBlank = False
.InCellDropdown = True
End With
End Sub
代码的想法是什么?通过串联所有属于
validationFormula
的单元格,在Not IsEmpty()
中创建验证字符串。 ValidationFormula准备就绪后,将向其中添加Chr(160)
,以确保我们也有可用的空白单元格。甚至可以这样添加它:
validationFormula = Chr(160) & "," & validationFormula
,如果需要将其放在第一个位置:准备好
validationFormula
字符串后,只要列表中只有一个空白-我们需要一个空白,就可以允许自己编写.IgnoreBlank = True
。感谢这个家伙,因为他有一个循环的想法-https://superuser.com/questions/1254754/data-validation-from-2-lists-excel-2010