Загрузка данных


import openpyxl

# Укажите точные названия ваших файлов
SOURCE_FILE = 'таблица_1_справочник.xlsx'  # Первая таблица (откуда берем данные)
TARGET_FILE = 'таблица_2_основная.xlsx'    # Вторая таблица (куда вписываем)
OUTPUT_FILE = 'таблица_2_готовая.xlsx'     # Имя файла для сохранения результата

# 1. Читаем первую таблицу и создаем словарь: { "Номер группы": "Форма обучения" }
wb_source = openpyxl.load_workbook(SOURCE_FILE, data_only=True)
sheet_source = wb_source.active  # Берется активный лист (или укажите wb_source['Имя_листа'])

group_map = {}

for row in range(1, sheet_source.max_row + 1):
    form_val = sheet_source[f'B{row}'].value   # Столбец B: Форма обучения (например, "Очная")
    group_val = sheet_source[f'C{row}'].value  # Столбец C: Номер группы (например, "26А-221")
    
    if group_val is not None and form_val is not None:
        # Очищаем от лишних пробелов по краям и переводим в строку
        clean_group = str(group_val).strip()
        clean_form = str(form_val).strip()
        group_map[clean_group] = clean_form

print(f"Загружено групп из первой таблицы: {len(group_map)}")

# 2. Открываем вторую таблицу и заполняем столбец C
wb_target = openpyxl.load_workbook(TARGET_FILE)
sheet_target = wb_target.active  # Или укажите нужный лист: wb_target['Имя_листа']

updated_count = 0
not_found_groups = set()

# Начинаем со 2-й строки, так как в 1-й строке находится шапка таблицы
for row in range(2, sheet_target.max_row + 1):
    target_group_cell = sheet_target[f'B{row}']  # Столбец B: "Группа"
    target_form_cell = sheet_target[f'C{row}']   # Столбец C: "Форма обучения"
    
    if target_group_cell.value is not None:
        clean_target_group = str(target_group_cell.value).strip()
        
        # Если группа есть в словаре — вписываем форму обучения
        if clean_target_group in group_map:
            target_form_cell.value = group_map[clean_target_group]
            updated_count += 1
        else:
            not_found_groups.add(clean_target_group)

# 3. Сохраняем результат в новый файл (чтобы случайно не повредить исходник)
wb_target.save(OUTPUT_FILE)

print(f"Готово! Заполнено строк: {updated_count}")
if not_found_groups:
    print(f"Группы, которые не нашлись в первой таблице ({len(not_found_groups)} шт.):")
    print(", ".join(sorted(not_found_groups)))