Лично я бы сделал две вещи:
сначала преобразовал бы список в набор, чтобы поиск элемента занимал меньше времени
remove_set = set(remove_list)
...
if ws.cell(row=count, column=2).value in remove_set:
, затем я бы избегал удаления строк вместо, так как для реорганизации структур данных, представляющих лист, требуется много времени.
Я бы создал новый пустой лист и добавил бы к нему только те строки, которые должны быть сохранены.
Затемсохраните новый лист, перезаписав оригинал, если хотите.
Если это все еще занимает слишком много времени, рассмотрите возможность использования формата CSV, чтобы вы могли обрабатывать входные данные как текст и выводить их таким же образом, повторно импортируяданные позже из программы работы с электронными таблицами (например, Ms-Excel)
Посмотрите официальные документы и это руководство , чтобы узнать, как использовать библиотеку CSV
Примечание: как заметил @Charlie Clark, вычисление
ws.max_row
может занять некоторое время, и нет необходимости повторять его.
сделать это, самое простое решение заключается вработать в обратном направлении от последней строки до первой, чтобы удаленные строки не влияли на положение предшествующих им.