【问题标题】:I need to filter using multiple conditions in Excel VBA我需要在 Excel VBA 中使用多个条件进行过滤
【发布时间】:2021-04-22 09:43:19
【问题描述】:

因此,我负责提出一个 Excel 程序,该程序可以在满足不同条件的情况下隐藏行。描述数据类型:

A 列第 2 行:公司名称

W 列,第 3-7 行:交易金额

第 X 列,第 7 行:交易总和

我需要隐藏所有交易总额不超过 600 的公司。如果他们总共有 600 或更多,我需要所有交易以及公司名称和总数保持可见。很少有公司共享相同数量的交易,所以我最初将其设置为检查公司名称行中的一个空单元格。我这里没有代码,因为它在我的工作计算机上(显然,这让我现在发疯了)。是这样的:

    Sub Totals()
       lastrow = Cells(Rows.Count, "W").End(xlUp).Row
       FirstRow = 2
       TempTotal = 0
       For x = FirstRow To lastrow + 1
           If Cells(x, "W") <> "" Then
               TempTotal = TempTotal + Cells(x, "W")
                       
           Else:   Cells(x - 1, "X") = TempTotal
                   TempTotal = 0
           End If
        Next x
    End Sub

我用它来汇总交易。我希望能够使用嵌套的 If 语句来打印事务总和,如果它们小于 600,则将相关行隐藏在同一代码中。我只是不知道如何指定整个部分...任何帮助将不胜感激!

【问题讨论】:

    标签: excel vba multiple-conditions


    【解决方案1】:

    下面的代码将指定整个部分并隐藏所有相关行公司名称 (Col A)、交易 (Col W) 和总数小于 600 的公司的总数 (Col X)。总数 >= 600 的公司将保持可见。

    Option Explicit
    Sub HideBelow600()
    
    Dim LastRow As Long, topRow As Long, bottomRow As Long, i As Long
    Dim ws As Worksheet: Set ws = ActiveSheet
    LastRow = ws.Cells(Rows.Count, 24).End(xlUp).Row
    
    For i = LastRow To 2 Step -1
        If ws.Cells(i, 24).Value < 600 And ws.Cells(i, 24) <> "" Then
            bottomRow = i
            topRow = ws.Cells(i, 24).Offset(0, -1).End(xlUp).Row - 1
                ws.Range(Sheet3.Cells(topRow, 24), ws.Cells(bottomRow, 24)).EntireRow.Hidden = True
        End If
    Next i
    
    End Sub
    

    【讨论】:

    • 非常感谢!!让我的生活轻松多了!!这很奇怪,因为我在运行它时遇到了 1004 错误,但它仍然进行了过滤。谢谢!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多