Проблема в этом:
sheet.merge_cells(start_row=start_row_index + 1, start_column=1, end_row=row_index + 1, end_column=1)
При каждом повторении текста в 1-й колонке (Подразделение) будет повторяться объединение ячеек от начальной (где начался повторяющийся текст) до каждой новой строки, т.е. куча наслаивающихся объединений A2:A3, A2:A4 и т.д.
Это Excel и не нравится. Объединение ячеек должно быть одно на всю группу ячеек, т.е. скажем тут только A2:A14.
Так что измените код, чтобы объединяло не по каждому совпадению, а по окончанию повторяющегося блока, одно объединение на каждый повторяющийся блок.
Можете или свой вариант проверки повторения видоизменить (только чтобы объединяло не более 1 раза на каждый блок повторений), или же просто в самом конце уже после построения всех ячеек согласно повторяющимся данным применить объединения на каждую из групп, например так:
from itertools import groupby
# из текущего кода убираем все merge_cells, а затем уже после цикла for row_index in ...
# проходимся по всем повторениям (используем группировку groupby)
idx = 2
for k, g in groupby(temp[1:], key = lambda x: x[0]):
# количество повторяющихся значений
cnt = len(list(g))
if cnt > 1:
sheet.merge_cells(start_row=idx, start_column=1, end_row=idx+cnt-1, end_column=1)
idx += cnt