我需要在 Excel VBA 中使用多个条件进行过滤
I need to filter using multiple conditions in Excel VBA
所以我负责想出一个 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,则在同一代码中隐藏相关行。我只是不知道如何指定整个部分...任何帮助将不胜感激!
以下代码将指定整个部分并隐藏公司名称(Col A)、交易(Col W)和总计(Col X)的公司的所有相关行小于 600。总数 >= 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
所以我负责想出一个 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,则在同一代码中隐藏相关行。我只是不知道如何指定整个部分...任何帮助将不胜感激!
以下代码将指定整个部分并隐藏公司名称(Col A)、交易(Col W)和总计(Col X)的公司的所有相关行小于 600。总数 >= 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