Объединение ячеек с уникальными значениями
необходимо через библиотеку xlwings в питоне объединить значения в столбце A, которые одинаковы 
пытаюсь это сделать при помощи этих строк кода:
range_to_merge=ws.range("A3:K100")
znac=list(set(range_to_merge.value))
for value in znac:
obed=ws.range(f'A3:A50')
obed.merge()
Но код делает не то,что нужно, не могли бы Вы подсказать вариант решения данной проблемы?
Ответы (1 шт):
Лучше не пользоваться объединенными ячейками - с ними потом очень неудобно работать - сортировать, фильтровать, копировать...
По сути решения - бесконечный цикл с выходом при нахождении первой пустой ячейки. Внутри 2 указателя и переменная с предыдущим запомненным значением. Если значение очередной ячейки отличается от предыдущего запомненного, то объединяем ячейки от старта до текущей-1, запоминаем новое значение, старт переносим на текущую ячейку и бежим дальше.
import xlwings as xw
wb_path, sheet_name, start_row, column = r'c:\test\test_xlwings_merge.xlsx', 'Лист1', 3, 'A'
with xw.App(visible=False) as app:
wb = app.books.open(wb_path)
sheet = wb.sheets[sheet_name]
row = start_row
group = sheet[f'{column}{row}']
while True:
v = sheet[f'{column}{row}'].value
if group != v:
if row - start_row > 1:
sheet[f'{column}{start_row}:{column}{row - 1}'].merge()
group = v
start_row = row
row += 1
if v is None:
break
wb.save()
wb.close()