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)))