@mandico21

Как правильно сделать цикл?

Добрый день, хотелось бы узнать, как можно сделать цикл, с интервалом в 18 строк
У меня стоит задача, с нескольких excel файлов сделать один по шаблону.
На примере
Мне нужно из 10 фалов Эксель сделать 1, под мой шаблон
связано все с фруктами, у меня список из 5 фруктов
Яблоко, Банан, Груша, Мандарин, Арбуз
и нужно проверить, есть ли эти фрукты в остальных файлах, а дальше уже вносить информацию в нужную ячейку, между ячейками интервал 18 строк
Я уже сделал сравнение файлов

for i in range(12, sheet.max_row):
    sa = sheet['B' + str(i)]
    if sa.value == spisol[0]:
        sheet2["B7"] = sheet['C' + str(i)].value
        sheet2["D7"] = sheet['E' + str(i)].value
        sheet2["E7"] = sheet['N' + str(i)].value
        sheet2["F7"] = sheet['F' + str(i)].value
        sheet2["G7"] = sheet['J' + str(i)].value
        print(sheet['B' + str(i)].value)
        continue
    elif sa.value == spisol[1]:
        sheet2["B25"] = sheet['C' + str(i)].value
        sheet2["D25"] = sheet['E' + str(i)].value
        sheet2["E25"] = sheet['N' + str(i)].value
        sheet2["F25"] = sheet['F' + str(i)].value
        sheet2["G25"] = sheet['J' + str(i)].value
        print(sheet['B' + str(i)].value)
        continue


sheet2["B7"] - Строки я прописывал в ручную. как можно это сделать через цикл, чтобы шаг между ячейками был 18 строк
При этом, если допустим в 10 файлов эксель, не нашелся банан, то он должен пропустить его ячейку и оставить ее постой,
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Учим циклы. Не уверен, что делаю именно то, что тебе нужно, но надеюсь, идея будет понятна.
sheet2["B7"] = sheet['C' + str(i)].value
sheet2["D7"] = sheet['E' + str(i)].value
sheet2["E7"] = sheet['N' + str(i)].value
sheet2["F7"] = sheet['F' + str(i)].value
sheet2["G7"] = sheet['J' + str(i)].value

легким движением руки превращается в...
cols1 = ('B', 'D', 'E', 'F', 'G')
cols2 = ('C', 'E', 'N', 'F', 'J')
row1 = 7 # какие строки тебе нужны, я так и не понял, ну да сам разберёшься
row2 = row1 + 18 # то же самое тут
#делаем цикл по парам - элемент из cols1 и элемент из cols2
for col1, col2 in zip( cols1, cols2): 
    # запись вида f'{x}' подставит в строку значение переменной x
    sheet2[f'{col1}{row1}'] = sheet[f'{col2}{row2}'].value
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы