私はC#プロジェクトで作業していましたが、達成しようとしているのはC#でフィルタリングされた範囲の可視行を数えることです。フィルタ処理されたExcelの行数をC#で計算する
まず、フィルタリングする範囲を作成します。
Range usedRange = sheet.Range[sheet.Cells[7, 1], sheet.UsedRange.SpecialCells(XlCellType.xlCellTypeLastCell)];
その後、私は2つのフィルタ適用されます、
usedRange.AutoFilter(20, "<>RAW", XlAutoFilterOperator.xlFilterValues, "<>AV", true);
usedRange.AutoFilter(2, "ARG", XlAutoFilterOperator.xlFilterValues, Type.Missing, true);
そして最後に、私は「XlCellType.xlCellTypeVisible」を使用して、別の範囲を作成し、行をカウントしてみてください、が、カウントは1を返します。
argFiltered = usedRange.SpecialCells(XlCellType.xlCellTypeVisible);
Console.WriteLine("Number of rows: "+ argFiltered.Rows.Count) // the count returns 1.
範囲をループするとカウントを取得できます。
//this is not effective
foreach (Range area in argFiltered.Areas) {
foreach (Range areaRow in area) {
count++;
}
}
私の質問です:「直接」目に見えるフィルター行の数を取得する方法はありますが、データの大きな量で、このプロセスに多くを遅らせることができますか?
ありがとうございました!
注: 範囲を選択すると、カウントに表示される正確な行数が選択されます。
argFiltered.Select();