无法使用VBA选择自动过滤的表格数据

时间:2019-01-23 08:26:49

标签: excel vba

我有一张桌子,上面有我应用自动过滤器的产品,我得到了过滤后的产品

Set tbl = Worksheets("FOR EXPORT").ListObjects("MyTable")
'SET AUTOFILTER
tbl.Range.AutoFilter Field:=3, Criteria1:="<>*ERROR*"

我要过滤产品,将它们复制到数组中,以便将其导出为CSV

所以我尝试选择

之类的过滤产品
Dim VisRng As Range
' set the new Range object to the visible cells of `tbl.Range`
Set VisRng = tbl.Range.SpecialCells(xlCellTypeVisible)
' copy only the visible cells in range to array
tblArr = VisRng.Value

如果我添加tbl.Range.SpecialCells(xlCellTypeVisible).select,它将要求一个对象

即使有大约362种过滤产品,我也只能得到196

如何将过滤后的数据复制到变量tblArr?为什么我的产品减少了?

2 个答案:

答案 0 :(得分:0)

您过滤的数据不是连续的。如果您过滤数据,并且firt和上次过滤的行之间存在隐藏行,那么数据就不是连续的。

如果在过滤之前先对 <activity android:name=".SignatureActivity" android:label="@string/title_yourTitle" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar"/> 上的数据进行排序,那么您将拥有需要放入数组中的连续范围。

答案 1 :(得分:0)

另一个解决方案是将VisRng.Copy并将值粘贴到新的工作簿/工作表中。然后将该工作表导出/保存为CSV。复制/粘贴不连续的范围将使其在目标位置连续。

示例:

Dim NewWB As Workbook 'create new workbook
Set NewWB = Application.Workbooks.Add

VisRng.Copy

NewWB.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues
NewWB.SaveAs Filename:="C:\Temp\MyFile.csv", FileFormat:=xlCSV
NewWB.Close SaveChanges:=False