#python-3.x #openpyxl
#python-3.x #openpyxl
Вопрос:
Я новичок в Python.Нужна помощь для обновления значений ячеек Excel. Попытка добавить добавочный суффикс с повторяющимися значениями или значениями существует более одного раза в таблице Excel.
Используя OpenPyxl, попробовал, как показано ниже, но работает не так, как ожидалось .. на самом деле моя цель — добавить добавочный суффикс к значениям ячеек, если значение ячейки существует более одного раза.
Мой пример кода:
for cell in ws.columns[0]:
if cell.value=='setoff':
for i in range(0,2):
cell.value = '{}_{}'.format(cell.value, i)
wb.save('OP_1.xlsx')
Мой код не различает дубликаты, а добавляет их как дубликаты.
Пожалуйста, руководство.
Фактические значения электронной таблицы:
Ответ №1:
Ваш код должен подсчитывать, как часто значение ячейки уже просматривалось, чтобы добавить правильный суффикс. Вот решение, использующее встроенный Counter
класс Python:
from collections import Counter
c = Counter()
for cell in ws.columns[0]:
if c[cell.value]>0:
cell.value = '{}_{}'.format(cell.value, c[cell.value])
c[cell.value] =1
wb.save('OP_1.xlsx')
Комментарии:
1. Спасибо, Коринна!! это работает, но третий набор не обновляется. я имею в виду, что 2-й и 3-й наборы обновляются как одинаковые с суффиксом ‘_1’. Ожидается, что 3-й набор должен быть обновлен на ‘_2’.
2. Также я пытаюсь получить значения ячеек на основе заголовков, выделенных желтым цветом. например, «если cell.value = m_terms, если print (setoff) — результатом должно быть соответствующее значение ячейки ‘Y’. как нам этого добиться?
3. Я думаю, что в моем коде нет ошибки. Вы уверены, что написали
c[cell.value] =1
вместоc[cell.value]=1
? Ваша попытка получить значения ячеек на основе выделенных заголовков выходит за рамки вашего первоначального вопроса, возможно, вам следует открыть новый.4. ДА. Ошибка не выдается, но не обновляется 3-й набор. В любом случае, спасибо за ваш вклад.