Пропуск пустой ячейки формулой с последующем её продолжением и вычитание 2 отдельных результатов используя EPPlus

Попал в тупик с данной задачей, от программы требуется чтобы формула рассчитывала показания по отдельности, до пустой ячейки (выделено стрелочкой) и после вычитала нижний результат от верхнего, я зашел в тупик так как пустая ячейка может быть на любой строчке в зависимости от таблицы и количество верхних и нижних строчек также может разниться.

sheet.Cells[20, 10, 32, 10].FormulaR1C1 = "( RC[-1]-RC[-2] )";

sheet.Cells[20, 11, 32, 11].FormulaR1C1 = "( RC[-1]*RC[-4] )";

Вот сам код формулы (верхняя строчка это вычитание текущих от предыдущих, нижняя умножение на коэффициент), но он уже не подходит так как требуется чтобы формула сама понимала сколько ячеек ей нужно вычислить а тут я задал ей ячейки, прошу помогите.

Вот весь код если понадобиться.

    private void Form1_Load(object sender, EventArgs e)
    {
        
    }

    private void button1_Click(object sender, EventArgs e)
    {
        using (var package = new ExcelPackage(@"C:\Users\user\Desktop\Test\Показания.xlsx"))
        {

            var newFile = new FileInfo("Показания.xlsx");
            var currentSheet = package.Workbook.Worksheets;
            var sheet = currentSheet.First();
            

            var startRow = 20;
            var endRow = 32;
            var columnStart = 10;
            var columnEnd = sheet.Cells.End.Column;
            
    
            ExcelWorksheet worksheet = package.Workbook.Worksheets["Показания"];
            int rowCount = worksheet.Dimension.End.Row;
            int colCount = worksheet.Dimension.End.Column;

            //Перебор строк и столбцов
            for (int row = 1; row <= rowCount; row++)
            {
                for (int col = 1; col <= colCount; col++)
                {
                    //Если вся строка пуста
                    var rowValue = sheet.Cells[row, col].Value;
                }
            }

            
            

            var cellRange = sheet.Cells[startRow, columnStart, endRow, columnEnd];

            var isRowEmpty = cellRange.All(c => c.Value == null);

            sheet.Cells[20, 10, 32, 10].FormulaR1C1 = "( RC[-1]-RC[-2] )";
            
            sheet.Cells[20, 11, 32, 11].FormulaR1C1 = "( RC[-1]*RC[-4] )";
                
            sheet.Cells.Calculate();

            foreach (var cell in sheet.Cells.Where(cell => cell.Formula != null))
                cell.Value = cell.Value;

            package.Save();
        }
    }


      private void button2_Click(object sender, EventArgs e)
      {
      }
   }
}

Ответы (0 шт):