gpt4 book ai didi

excel - 按条件自动过滤,如果特定列中没有数据,则应停止执行条件之一

转载 作者:行者123 更新时间:2023-12-04 08:11:13 26 4
gpt4 key购买 nike

我的目标是创建一个程序,它总是过滤一个标准(在 I 列中),但如果它存在,则对标准(在 T 列中)进行下一个过滤。
首先,我是初学者,因此感谢您的耐心和理解。
这篇文章很长,因为我展示了如何工作以及我希望它如何工作的屏幕。它可以帮助我解释我的问题。
我想为这个简单的单元格范围实现我的程序:
enter image description here
因此,我们有这个范围的单元格,我们需要通过基于标准的过滤来选择一些值:

Sub Filter1()

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
sh.AutoFilterMode = False
sh.Range("C7:U7").AutoFilter Field:=7, Criteria1:="Lukasz"
If WorksheetFunction.CountIf(sh.Range("T:T"), "Check") > 0 Then
sh.Range("C7:U7").AutoFilter Field:=18, Criteria1:="Check"

End If
End Sub
如果在 I 列中我们有值(例如“Lukasz”)并且在 T 列中我们有值“Check”,则它可以正常工作,因为我的程序已经创建。
enter image description here
然后,这是主要问题,正如您在 I 列中看到的 Lukasz 一样,T 列中没有“检查”值:
enter image description here
不幸的是,在运行我的宏后,它显示空单元格,如果我们在 I 列中有名称“Lukasz”的数据,但在“数据”的列 T 中没有标准“Lukasz”的数据,我运行宏并结果是:
enter image description here
但是,在那种情况下,我想实现它:
enter image description here
因此,如果此列中没有“检查”值,我不知道如何修改或创建我的程序以停止根据标准过滤列 T。
是否可以修改我的宏或创建新的宏来实现我的目标?如果是这样,您能否修改我的程序并分享它以实现我的目标?我会测试它。
如果你能做到,我将不胜感激。

最佳答案

问题是 WorksheetFunction.CountIf(sh.Range("T:T"), "Check")统计所有CheckT 列中不仅是可见的。

Sub Filter1()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
sh.AutoFilterMode = False
sh.Range("C7:U7").AutoFilter Field:=7, Criteria1:="Lukasz"

Dim FilteredRange As Range 'get only visible cells in column T
Set FilteredRange = sh.Range("T:T").SpecialCells(xlCellTypeVisible)

'search if Check can be found (we don't need to count them, one is enough!)
If Not FilteredRange.Find(What:="Check", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchByte:=True) Is Nothing Then
sh.Range("C7:U7").AutoFilter Field:=18, Criteria1:="Check"
End If
End Sub
请注意 CountIf不适用于像 FilteredRange 这样的非连续范围返回。但是我们可以使用 Range.Find method因为我们只对 Check 的存在感兴趣而不是 Check 的数量. Find返回 Nothing如果 Check没找到。

关于excel - 按条件自动过滤,如果特定列中没有数据,则应停止执行条件之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65952156/

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