gpt4 book ai didi

excel - 从多选列表框填充 AdvancedFilter 条件

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

有一个与此类似的问题,但不符合此处的规范。

我有一个 MultiSelect ListBox 和一个代表 AdvancedFilter 标准的表。

我想用从列表框中选择的所有值填充此表的“级别”列,每个值都应该在单独的行中(高级过滤器的 OR 条件)。

我正在寻找的结果:

enter image description here
enter image description here

enter image description here enter image description here

如果未选择任何项目,则应删除表中添加的行并仅填充“<>0”。

enter image description here enter image description here

到目前为止,我编写的代码执行了前 2 个图像中显示的技巧,但是当我取消选择所有项目时,它不再起作用:

 Private Sub ListBox1_LostFocus()

Dim aArray() As Single
ReDim aArray(1 To 1) As Single
With ListBox1
For I = 0 To .ListCount - 1
If .Selected(I) Then
aArray(UBound(aArray)) = .List(I)
ReDim Preserve aArray(1 To UBound(aArray) + 1) As Single
End If
Next I
End With

Range(Cells(3, "S"), Cells(UBound(aArray) - 1, "S"))= Application.Transpose(aArray)

End Sub

有人已经处理过这个问题了吗?任何帮助将非常感激!太感谢了!

最佳答案

我认为这会做你想要的。根据我关于使用“<>0”预加载的评论 - 这是不可能的,因为你的数组是一个单一的。所以你需要捕获它。此外,我调整了你的写入范围,就像在我的模型中一样,如果选择了 1 个或更多,我最后总是得到一个零。

Dim aArray() As Single
ReDim aArray(1 To 1) As Single

With ListBox1
For I = 0 To .ListCount - 1
If .Selected(I) Then
aArray(UBound(aArray)) = .List(I)
ReDim Preserve aArray(1 To UBound(aArray) + 1) As Single
End If
Next I
End With

Range("S3:S10").ClearContents ' change this range to suit

If UBound(aArray) = 1 Then
Range("S3") = "<>0"
Else
Range(Cells(3, "S"), Cells(3 + UBound(aArray) - 2, "S")) = Application.Transpose(aArray)
End If

关于excel - 从多选列表框填充 AdvancedFilter 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50764441/

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