Count range cells eliminating merge cells
I have created a method to count the number of cells in a range taking into consideration that merged cell are counted as one cell.
Here is the method
private static int getRangeCount(Range Target)
{
if (Target == null)
return 0;
if (Target.Cells == null)
return 0;
if (Target.Cells.Count <= 1)
return Target.Cells.Count;
int count = 0;
foreach (Range cell in Target)
{
if (cell.MergeCells != null && cell.MergeCells is bool && (bool)cell.MergeCells)
{
Range rng = (Range)cell.MergeArea[1, 1];
if (!Microsoft.Office.Tools.Excel.ExcelLocale1033Prox y.ReferenceEquals(cell, rng))
{
string str1 = WorkbookUtils.GetAddress(cell, XlReferenceStyle.xlA1);
string str2 = WorkbookUtils.GetAddress(rng, XlReferenceStyle.xlA1);
if (str1 == str2)
count++;
}
}
else
count++;
}
return count;
}
My problem now is that a user is using this method on a range with 8448 cells. Because the target is so big the method takes a very very very long time.
Is there a way to improve the above code?
Last edited by danbenedek; 06-15-2010 at 12:42 AM.
Reason: code review
|