如何循环Excel单元格过滤器

时间:2016-03-07 17:31:18

标签: excel vba loops

我有一个要过滤值的列​​:

enter image description here

现在我想只在已过滤的单元格上循环
这就是我所做的:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

...

    ArrayList<String> list = new ArrayList<String>();
    list.add("item1");
    list.add("item2");

    MyCustomAdapter adapter = new MyCustomAdapter(list, this);

    ListView listView = (ListView) getView().findViewById(R.id.listView_fragone);
   listView.setAdapter(adapter);

...
}

但我有超过50000个细胞...有更快的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法找到过滤的单元格:

ActiveSheet.range("valid range for column").Rows.SpecialCells(xlCellTypeVisible)

然后你可以迭代结果并做一些事情。

例如,当我有一张桌子时,我可以这样做:

Dim lastRow
lastRow = ActiveSheet.ListObjects("Table1").range.Rows.Count
Dim range
Set range = ActiveSheet.range("A2:A" & lastRow).Rows.SpecialCells(xlCellTypeVisible)
For Each rCell In range.Cells
    MsgBox rCell.Value
Next rCell

答案 1 :(得分:1)

使用SpecialCells对象的range方法

with ws.Columns(1).SpecialCells(xlCellTypeVisible)
'... do something.
'    for instance:  .Font.Bold = True
end with

其中ws是要使用其列“A”的工作表对象