Как лучше исполнить алгоритм подбора строительных материалов?
С Екселем работал человек, которому было удобнее работать с одной простыней. С базой будет работать код, которому нужна логика, а не наглядность. Корячиться с одной таблицей - дурость. Делайте нормальные формы и забудьте уже этот каменный век.
работать однозначно удобнее с mysql, вот только зачем все завязывать на excel и для чего этот велосипед с цветом ячеек? А хранить составленные сметы вы где собираетесь а как потом работать с уже составленными сметами?  
я бы сделал так:  табл mysql id группа услуги наименование услуги ед.измерения объем необходимые материалы json массив стоимость за ед.измерения с материалами и видами работ и их стоимостью табл mysql id Контрагент массив в json со списком всех сохраненных услуг в заказе id услуги название услуги стоимость услуги -да, сюда дублируем стоимость услуги, для того, чтобы в случае изменения ее в базе, закрытые сметы оставались с теми суммами, которые вы получили по факту. Это пригодится в случае построения отчетов объем услуги ед. измерения стоимость работ дата составления запланированная дата начала работ запланированная дата окончания работ  с сохраненными расчетами
сделал бы фронт-енд на js, чтобы по первым введенным буквам в форму добавления услуги производился поиск по названию и вывод информации, добавление дополнительной услуги к заказу - тоже интерактивно через Js
на бек повесил бы обработчики на php, оптимизировал бы это дело для мобильных платформ, получится что прораб сможет в полях поднять смету или составить новую.
ну и данный можно легко редактировать + куча потенциально возможного функционала, например: уведомления на почту, можно прикрутить и смс о подходящих датах, можно сделать отправку сметы на почту в виде xml или pdf файла, календарь запланированных работ. Подсчет дохода за выбранный период времени или выборка по контрагенту.
могу набросать за 2-3 дня рабочий вариант, а то чет поиздержался, а нг на носу )