Хотя вы не можете сделать это в Excel, это возможно в Resolver One (хотя это все еще довольно странная вещь).
Это электронная таблица, которая позволяет вам определять пользовательские функции в Python, которые затем можно вызывать из формулы ячейки в сетке.
В качестве примера того, что вы спрашиваете, вы можете определить функцию safeDivide
, которая (вместо вызова ZeroDivisionError
) сообщала вам о проблеме, закрашивая ячейку знаменателя и помещая сообщение об ошибке рядом Это. Вы можете определить это так:
def safeDivide(numerator, cellRange):
if not isinstance(cellRange, CellRange):
raise ValueError('denominator must be a cell range')
denominator = cellRange.Value
if denominator == 0:
cell = cellRange.TopLeft
cell.BackColor = Color.Red
cell.Offset(1, 0).Value = 'Tried to divide by zero'
return 0
return numerator / denominator
Есть дополнительная складка: функции, которые передают переданные ячейки, просто передают значение ячейки, поэтому, чтобы обойти это, мы настаиваем на том, чтобы передать знаменатель для одной ячейки.
Если вы пытаетесь делать необычные вещи с электронными таблицами, которые не совсем вписываются в Excel, или вы заинтересованы в использовании возможностей Python для работы с данными электронных таблиц, стоит взглянуть на Resolver One.