Обновление ячеек в диапазоне с помощью цикла for - PullRequest
0 голосов
/ 27 октября 2019

Я довольно новичок в кодировании, поэтому извиняюсь, если это легко. У меня есть два столбца в листах Google, и я хочу добавить формулу в третий столбец, который выглядит примерно так: = (E3 * 90) + (F3 * 10) - значения в столбцах - это оценки, а 90 и 10 -фиксированные значения веса.

Я создал цикл for, чтобы попытаться перебрать диапазон (3,90) при обновлении каждой ячейки в столбце.

Он печатает формулу в каждомячейка, но это только последняя итерация '= (E89 * 90) + (F89 * 10)'

Мне удалось добиться этого, добавив report.update_acell('E'+str(i),'=(E'+str(i)+'*90)+(F'+str(i)+'*10)') в цикл for, но это создает слишком много вызовов и причинпроблемы.

sh = client.open("grading")
report = sh.worksheet("Report")
weighted = report.range('G3:G89')

for cell in weighted:
    for i in range(3,90):
        cell.value = '=(E'+str(i)+'*90)+(F'+str(i)+'*10)'

report.update_cells(weighted, value_input_option='USER_ENTERED')

Я хотел бы, чтобы каждая ячейка в «взвешенном» диапазоне была обновлена ​​формулой, которая смотрит на две ячейки рядом с ними и добавляет их в формулу, так чторезультат виден во взвешенном столбце. например. строка 3 должна быть = (E3 * 90) + (F3 * 10) строка 4 должна быть = (E4 * 90) + (F4 * 10) и так далее до тех пор, пока диапазон не будет заполнен.

1 Ответ

0 голосов
/ 27 октября 2019

Я исправил это после большого количества проб и ошибок. Для тех, кто пытается сделать то же самое, вот мое решение:

sh = client.open("grading")
report = sh.worksheet("Report")
weighted = report.range('G3:G89')

for i, cell in enumerate(weighted,3):
    cell.value = '=(E'+str(i)+'*90)+(F'+str(i)+'*10)'

report.update_cells(weighted, value_input_option='USER_ENTERED')
...