我不知道从 Cell A1 到 A65555 会有多少个值。我有 B1,它设置了基于 A 列的数据验证,如下所示 A1:A65555
值存在于最多 10 行的 A 列中。(从 A1 到 A10)
但是当我单击 B1 时,它会显示空值以及 A1 到 A10。我希望 A 列的所有非空值都列在 B1 中。
注意:我在数据验证设置中勾选了“忽略空白单元格”选项。或任何人让我知道如何通过 VBA 设置数据验证?
我不知道从 Cell A1 到 A65555 会有多少个值。我有 B1,它设置了基于 A 列的数据验证,如下所示 A1:A65555
值存在于最多 10 行的 A 列中。(从 A1 到 A10)
但是当我单击 B1 时,它会显示空值以及 A1 到 A10。我希望 A 列的所有非空值都列在 B1 中。
注意:我在数据验证设置中勾选了“忽略空白单元格”选项。或任何人让我知道如何通过 VBA 设置数据验证?
假设您在 A 列中没有间隙,在列底部只有一些空白行(因为数据始终是 A1:AN,其中 1 < N <= 65555)
公式 => 定义名称
输入一些名称(如 ValidationList)
用这个作为你的公式=OFFSET(INDIRECT("Sheet1!$A$1"),0,0,COUNTA(Sheet1!$A:$A),1)
然后将数据验证列表定义为您输入的名称(并再次检查忽略空白,以便在您没有选择任何内容时不会出错)
我写了一些代码,通过 vba 以编程方式插入数据验证并忽略空白,因此列表将更容易滚动。
Sheets("Whatsup_msg") 列 J 中的验证,来自 Source Sheets("Phones_Emails") 列 A。
Sub ValidateNonBlanks()
Dim lastRowCombo As Long
Dim lastRowSource As Long
Dim rangeSource As Range
Dim rangeCombo As Range
lastRowCombo = 150
lastRowSource = Sheets("Phones_Emails").Cells(Rows.Count, "A").End(xlUp).row
Set rangeCombo = Sheets("Whatsup_msg").Range("J4:J" & lastRowCombo)
Set rangeSource = Sheets("Phones_Emails").Range("A4:A" & lastRowSource)
With rangeCombo.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Phones_Emails!$A$2:$A$" & lastRowSource
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub