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)
if (Target.Cells == null)
if (Target.Cells.Count <= 1)
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.ExcelLocale1033Proxy.ReferenceEquals(cell, rng))
string str1 = WorkbookUtils.GetAddress(cell, XlReferenceStyle.xlA1);
string str2 = WorkbookUtils.GetAddress(rng, XlReferenceStyle.xlA1);
if (str1 == str2)
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?