excel - 自动过滤和打印电子表格
问题描述
我有一个包含 3 列值的电子表格。我想用 VBA 循环代码过滤和打印。我写的代码如下。如果我使用数值,criteria 1:="<26"
那么它会过滤下面的所有值26
。但我希望它与循环值一起工作,例如低于26
比27 to 50
等的值。
过滤后,我可以使用打印命令,然后转到下一个值过滤器并打印,依此类推,直到全部打印到最后一行。不知道如何解决这个问题。
Sub loopi()
Dim i As Integer
Dim lrow As Integer
i = 1
lrow = Cells(Rows.Count, 1).End(xlUp).Row
Do While i < lrow
i = i + 25
ActiveSheet.Range("A1").AutoFilter Field:=1, Criteria1:="<i"
ActiveSheet.AutoFilterMode = False
Loop
End Sub
解决方案
i
不被识别为变量,Criteria1:="<i"
而是字符i
。您必须将其更改为Criteria1:="<" & i
才能将循环中的计数器i
用作条件。您的行计数变量需要是类型
Long
,因为 Excel 的行数超出了Integer
处理能力。如果您想要数据,例如来自 25…50 的数据,那么您需要 2 个条件,
And
过滤器中有一个运算符。所以你需要计算开始和结束的标准。
Option Explicit
Public Sub PrintSplitData()
Dim ws As Worksheet
Set ws = ThisWorkbook.ActiveSheet
'better to name the sheet unless you do it on many different sheets
'Set ws = ThisWorkbook.Worksheets("YouDataSheetName")
Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Dim iStartRow As Long, iEndRow As Long
For iStartRow = 1 To LastRow Step 25
iEndRow = iStartRow + 24
iEndRow = IIf(iEndRow > LastRow, LastRow, iEndRow) 'limit it to LastRow
Debug.Print iStartRow, iEndRow 'this is just for illustrating
ws.Range("A1").AutoFilter Field:=1, Criteria1:=">=" & iStartRow, Operator:=xlAnd, Criteria2:="<=" & iEndRow
ws.AutoFilterMode = False
Next iStartRow
End Sub
推荐阅读
- unity3d - 在着色器图中使用渐变填充不规则形状
- linux - Windows 的“/sys/class/net”等价物是什么
- swift - Swift 5 URLSession API 类抛出奇怪的错误
- javascript - 是否可以通过 HTML 按钮在我的机器上执行 python 脚本?
- java - 为什么有些服务器为同一个文件返回不同的内容长度?
- r - 在看不见的数据上测试 ml 模型时出错,尝试合并数据集或省略 na
- python - Python Scrapy 在第一个元素 csspath() 处停止并且不会抓取其余部分
- c# - 逐帧/逐样本播放时同步音频和视频播放
- excel - 如何将不同的临时值传递给触发的子程序?
- javascript - React Router 中的多个可选参数