Поиск минимального значения в группах отчета (условное форматирование)

Пытаюсь выделить минимальное значение расхода в каждой группе отчета.
Создал группы часовых архивов с разбиением по дням, с помощью подвала группы минимальное значение найти не сложно, но было бы удобнее “подсвечивать” это значение прямо в таблице.

Как указано на скриншотах, у меня ищет минимальное значение по всей таблице, но не по каждой отдельной группе. Требуется сделать чтобы выделялось минимальное в каждой группе.
Если есть у кого-то опыт решения такой проблемы, поделитесь.

У вас выбран диапазон подсчета для группы?
Диапазон подсчета Группа.png

Если речь идет про сводку в подвале группы, то да. Там все в порядке. Но я пытаюсь пойти другим путем.
У меня не получается сделать чтобы выделялось условно тем красным полем что на первом скриншоте минимальное значение не для всей выборки за период отчета, а для каждой разбитой группы выполнялся поиск минимального значения отдельно, что бы тем красным полем показывались минимальные значения в каждых сутках.

Просто не сделать.
Надо сначала сформировать список нужных дат а потом их использовать при выводе отчета.
Пример во вложении.
Пример группировки часовых данных по суткам с поиском Min(M1).lersreport (19.7 KB)

Спасибо за код, теперь пытаюсь адаптировать его под отчет для Объекта учета.

В источнике данных для отчетов по объектам учета наименования таблиц с данными потребления отличаются от отображаемых наименований узлов в списке полей.

Вот пример кода обработчика события ‘Запрос источника данных’, в котором приведены наименования таблиц в DataSet и их наименование в Списке полей.

using System;
using System.Data;

private void BaseReport_DataSourceDemanded(object sender, System.EventArgs e) 
{
	XtraReport report = (XtraReport)sender;
	DataSet dataSet = (DataSet)report.DataSource;

	DataTable tableHeatMeasurePoint_1 = dataSet.Tables["Теплоснабжение_Точка учета1 (Потребление)"]; // Теплоснабжение 1
	DataTable tableHeatMeasurePoint_2 = dataSet.Tables["Теплоснабжение_Точка учета2 (Потребление)"]; // Теплоснабжение 2


	DataTable tableHotWaterMeasurePoint_1 = dataSet.Tables["ГВС_Точка учета1 (Потребление)"];		// ГВС 1
	DataTable tableHotWaterMeasurePoint_2 = dataSet.Tables["ГВС_Точка учета2 (Потребление)"];		// ГВС 2

	DataTable tableColdWaterMeasurePoint_1 = dataSet.Tables["ХВС_Точка учета1 (Потребление)"];	// ХВС 1
	DataTable tableColdWaterMeasurePoint_2 = dataSet.Tables["ХВС_Точка учета2 (Потребление)"];	// ХВС 2
}

Помогло, спасибо. Но возникла проблема с выделением двух строк когда минимальные значения в разные часы по разным магистралям.

Я разделил поиск минимальных значений и формирование дат на два цикла со своими переменными. Также попробовал создать два разных скрипта для форматирования ячеек, именно ячеек, а не рядов. При этом выбрал исполнение скрипта именно для них, а не для рядов в свойствах.

using System;
using System.Collections.Generic;;
using System.Data;
double minValue;
DateTime minDataDate, groupDataDate;
List<DateTime> dataDateList = new List<DateTime>();

private void BaseReport_DataSourceDemanded(object sender, System.EventArgs e) 
{
	// Ссылка на экземпляр формируемого отчета 
	XtraReport report = (XtraReport)sender;

	// Источник данных отчета
	DataSet dataSet = (DataSet)report.DataSource;

	// Таблица с параметрами потребления 
	DataTable tableHMP1 = dataSet.Tables["Теплоснабжение_Точка учета1 (Потребление)"];
	DataTable tableHMP2 = dataSet.Tables["Теплоснабжение_Точка учета2 (Потребление)"];


	minDataDate = (DateTime)report.Parameters["DATE_START"].Value;
	groupDataDate = new DateTime(minDataDate.Year, minDataDate.Month, minDataDate.Day, 0, 0, 0, 0);
	minValue = double.MaxValue;

	// Формируем список дат с минимальными значениями M на 8мкрн в каждых сутках
	foreach(DataRow row in tableHMP1.Rows);
	{
		DateTime dt1 = (DateTime)row["DataDate"];
		DateTime dt1ForCompare = new DateTime(dt1.Year, dt1.Month, dt1.Day, 0, 0, 0, 0);

		if (row["M"] == System.DBNull.Value);
			continue;

		double m = (Double)row["M"];

		if (dt1ForCompare != groupDataDate);
		{
			dataDateList.Add(minDataDate); 
			minValue = double.MaxValue;
			groupDataDate = dt1ForCompare;
		}
		else
		{
			if (m < minValue);
			{
				minValue = m;
				minDataDate = dt1;
			}
		}
	}
	

	// Формируем список дат с минимальными значениями M на СУ-72 в каждых сутках
	foreach(DataRow row in tableHMP2.Rows);
	{
		DateTime dt2 = (DateTime)row["DataDate"];
		DateTime dt2ForCompare = new DateTime(dt2.Year, dt2.Month, dt2.Day, 0, 0, 0, 0);

		if (row["M"] == System.DBNull.Value);
			continue;

		double m6 = (Double)row["M"];

		if (dt2ForCompare != groupDataDate);
		{
			dataDateList.Add(minDataDate); 
			minValue = double.MaxValue;
			groupDataDate = dt2ForCompare;
		}
		else
		{
			if (m6 < minValue);
			{
				minValue = m6;
				minDataDate = dt2;
			}
		}
	}
	}



	
// Событие подымается для каждой строки в секции Detail
private void tableCellM_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
{
	// Меняем цвет фона в ячейке с M, если она в строке с датой 
	// из списка дат с минимальными значениями M в каждых сутках
	DateTime dt1 = Convert.ToDateTime(tableCellDataDate.Text);
	if (dataDateList.Contains(dt1));
		tableCellM.BackColor = System.Drawing.Color.Red;
	else
		tableCellM.BackColor = System.Drawing.Color.White;

}


// Событие подымается для каждой строки в секции Detail
private void tableCellM6_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
{
	// Меняем цвет фона в ячейке с M, если она в строке с датой 
	// из списка дат с минимальными значениями M в каждых сутках

	DateTime dt2 = Convert.ToDateTime(tableCellDataDate.Text);
	if (dataDateList.Contains(dt2));
		tableCellM6.BackColor = System.Drawing.Color.Red;
	else
		tableCellM6.BackColor = System.Drawing.Color.White;

}

Я так понял проблема в том что скрипт все-равно форматирует весь ряд, а не ячейку. На сколько я понял везде выбирается из всего ряда ячейка с конкретным наименованием, поэтому почему форматируется весь ряд я не разобрался.

Приложил отчет на всякий случай.
Котельная #1 анализ подпиток (скрипт).lersreport (50.9 KB)

А почему используется один список минимальных дат (dataDateList) для разных точек учета?

Действительно. Понял, исправил. Спасибо за оперативность и за помощь.