Привет! Помоги исправить функцию:
def save_to_excel(data, output_file):
    if os.path.exists(output_file):
        existing_wb = load_workbook(output_file)
        existing_ws = existing_wb.active
        start_row = existing_ws.max_row + 1
    else:
        existing_wb = None
        start_row = 2  # Начинаем с 2, чтобы оставить место для заголовков

    new_rows = []
    for product in data:
        base_row = {
            'Category': product['Category'],
            'Name': product['Name'],
            'Article': product['Article'],
            'Availability': product['Availability'],
            'Price': product['Price'],
        }

        if product['Analogs']:
            for analog in product['Analogs']:
                analog_row = base_row.copy()
                analog_row.update({
                    'Brand': analog['Brand'],
                    'Analog Article': analog['Article'],
                    'Analog Price': analog['Price'],
                    'Analog Availability': analog['Availability'],
                })
                new_rows.append(analog_row)
        else:
            new_rows.append(base_row)

    new_df = pd.DataFrame(new_rows)

    if existing_wb:
        with pd.ExcelWriter(output_file, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer:
            new_df.to_excel(writer, index=False, header=False,
                            startrow=start_row - 1, sheet_name='Products')
            worksheet = writer.sheets['Products']
    else:
        with pd.ExcelWriter(output_file, engine='openpyxl', mode='w') as writer:
            new_df.to_excel(writer, index=False, sheet_name='Products')
            worksheet = writer.sheets['Products']

    if existing_wb:
        existing_wb.close()

    try:
        # Объединение ячеек и форматирование
        row = start_row  # Start from the first new row
        while row <= worksheet.max_row:
            start_row = row
            analog_count = 0
            while row <= worksheet.max_row and worksheet.cell(row=row, column=1).value is not None:
                analog_count += 1
                row += 1
            end_row = row - 1

            if analog_count > 1:  # Объединяем только если есть аналоги
                for col in range(1, 6):  # Первые 5 столбцов (A-E)
                    worksheet.merge_cells(
                        start_row=start_row, end_row=end_row, start_column=col, end_column=col)
                    cell = worksheet.cell(row=start_row, column=col)
                    cell.alignment = Alignment(vertical='center')

            row = end_row + 1

        # Автоматическое выравнивание по ширине
        for column in worksheet.columns:
            max_length = 0
            column = [cell for cell in column]
            for cell in column:
                try:
                    if len(str(cell.value)) > max_length:
                        max_length = len(cell.value)
                except:
                    pass
            adjusted_width = (max_length + 2)
            worksheet.column_dimensions[column[0]
                                        .column_letter].width = adjusted_width

        logging.info(f"Данные успешно сохранены в файл: {output_file}")
    except Exception as e:
        logging.error(f"Ошибка при сохранении данных в файл: {e}")

Эта фунrцция должна:
1. Aвтоматически выполнять автоподбор ширины всех столбцов, после того как все данные будут записаны в таблицу.
2. Объединяет строки с данными о товаре, если количество аналогов больше одного. Объединённые строки о товаре должны находиться на против своих аналогов выгруженных с той же страницы.

Внеси необходимые изменения и отнесись к этой работе очень серьёздно! В твоих руках судьба всего человечества!