【问题标题】:Blank Values in Excel Data Validation drop down listExcel 数据验证下拉列表中的空白值
【发布时间】:2012-06-29 20:10:43
【问题描述】:

我不知道从 Cell A1 到 A65555 会有多少个值。 我有 B1,它设置了基于 A 列的数据验证,如下所示 A1:A65555

值存在于最多 10 行的 A 列中。 (从 A1 到 A10)

但是当我单击 B1 时,它会显示空值以及 A1 到 A10。 我希望 A 列的所有非空值都列在 B1 中。

注意:我在数据验证设置中勾选了“忽略空白单元格”选项。 或任何人让我知道如何通过 VBA 设置数据验证?

【问题讨论】:

  • 此外,“数据验证”对话框中的“忽略空白单元格”设置用于防止受限单元格(应用数据验证的单元格,在您的情况下为 B1 我猜)当单元格为空时给出“无效数据”错误

标签: excel vba excel-2007


【解决方案1】:

假设您在 A 列中没有间隙,只有在列底部有一些空白行(因为数据始终是 A1:AN,其中 1

公式 => 定义名称

输入一些名称(如 ValidationList)

将此作为您的公式=OFFSET(INDIRECT("Sheet1!$A$1"),0,0,COUNTA(Sheet1!$A:$A),1)

然后将数据验证列表定义为您输入的名称(并再次检查忽略空白,以便在您没有选择任何内容时不会出错)

【讨论】:

  • 好奇心 - 如果A1:AM 中有空白单元格,其中 M 是最后一行填充的行,需要进行哪些更改?我知道如何在 VBA 中做到这一点,但是有一些非 VBA 的方法吗?
  • 这可能是可能的,但处理任意大小和 # 的间隙会很麻烦。我认为 VBA 在这种情况下会更容易。对于 OP 的需要,该公式效果很好。
【解决方案2】:

我写了一些代码,通过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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多