Прецеденты и зависимые

Введение

  • Предшествующие ячейки - это ячейки, на которые ссылается формула в другой ячейке. Например, если ячейка D10 содержит формулу =B5, то ячейка B5 является предшествующей по отношению к ячейке D10.
  • Зависимые ячейки содержат формулы, которые ссылается на другие ячейки. Например, если ячейка D10 содержит формулу =B5, то ячейка D10 зависит от ячейки B5.

Чтобы сделать таблицу удобной для чтения, вы можете явно показать, какие ячейки в таблице используются в формулах. Точно так же, вы можете извлечь зависимые ячейки других ячеек.

Aspose.Cells для Python via .NET позволяет отслеживать ячейки и определять, какие связаны.

Отслеживание предшествующих и зависимых ячеек: Microsoft Excel

Формулы могут изменяться в зависимости от изменений, внесенных клиентом. Например, если ячейка C1 зависит от того, что в C3 и C4 содержится формула, и C1 изменяется (что приводит к перезаписи формулы), то C3 и C4 или другие ячейки должны измениться, чтобы сбалансировать таблицу согласно правилам бизнеса.

Точно так же, предположим, что C1 содержит формулу “=(B122)/(M2N32)”. Я хочу найти ячейки, от которых зависит C1, то есть предшественники B1, M2 и N32.

Вам может потребоваться определить зависимость конкретной ячейки от других ячеек. Если деловые правила закодированы в формулах, мы хотели бы узнать зависимость и выполнить некоторые правила на ее основе. Точно так же, если значение конкретной ячейки изменено, какие ячейки в листе электронной таблицы затронуты этим изменением?

Microsoft Excel позволяет пользователям отслеживать предшественников и зависимых.

  1. На Панели инструментов Вид выберите Аудит формул. Будет отображено диалоговое окно Аудит формул.
  2. Следить за предшественниками:
    1. Выберите ячейку, содержащую формулу, для которой вы хотите найти предшествующие ячейки.
    2. Чтобы отобразить стрелку маршрута к каждой ячейке, которая непосредственно предоставляет данные для активной ячейки, щелкните Отслеживание предшественников на Панели инструментов Проверка формул.
  3. Отследить формулы, которые ссылается на конкретную ячейку (зависимости)
    1. Введите ячейку, для которой вы хотите найти зависимые ячейки.
    2. Чтобы отобразить стрелку маршрута к каждой ячейке, которая зависит от активной ячейки, щелкните Отслеживание зависимости на панели инструментов Проверка формул.

Отследивание предшественников и зависимых ячеек: Aspose.Cells для Python via .NET

Отслеживание предшественников

Aspose.Cells для Python via .NET облегчает получение предшественников ячеек. Он может извлекать ячейки, предоставляющие данные простым формулам, а также находить ячейки, предоставляющие данные сложным формулам с именованными диапазонами.

В приведенном ниже примере используется шаблонный файл Excel, Book1.xls. На первом листе электронной таблицы содержатся данные и формулы.

Aspose.Cells для Python via .NET предоставляет класс Cell с методом get_precedents, используемый для отслеживания предшественников ячейки. Он возвращает ReferredAreaCollection. Как видно выше, в Book1.xls ячейка B7 содержит формулу “=SUM(A1:A3)”. Так что ячейки A1:A3 — это предшественники ячейки B7. Следующий пример демонстрирует функцию отслеживания предшественников с использованием файла-шаблона Book1.xls.

from aspose.cells import CellsHelper, Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
workbook = Workbook(dataDir + "Book1.xlsx")
cells = workbook.worksheets[0].cells
cell = cells.get("B4")
ret = cell.get_precedents()
area = ret[0]
print(area.sheet_name)
print(CellsHelper.cell_index_to_name(area.start_row, area.start_column))
print(CellsHelper.cell_index_to_name(area.end_row, area.end_column))

Отслеживание зависимых

Aspose.Cells для Python via .NET позволяет вам получать зависимые ячейки в таблицах. Aspose.Cells для Python via .NET не только может получать ячейки, предоставляющие данные простым формулам, но и находить ячейки, предоставляющие данные сложным зависимым формул с именованными диапазонами.

Aspose.Cells для Python via .NET предоставляет класс Cell с методом get_dependents, используемый для отслеживания зависимых ячеек. Например, в Book1.xlsx есть формулы: “=A1+20” и “=A1+30” в ячейках B2 и C2 соответственно. Следующий пример показывает, как отслеживать зависимых для ячейки A1, используя файл-шаблон Book1.xlsx.

from aspose.cells import Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
workbook = Workbook(dataDir + "Book1.xlsx")
cells = workbook.worksheets[0].cells
cell = cells.get("B2")
ret = cell.get_dependents(True)
for c in cell.get_dependents(True):
print(c.name)

Отслеживание предшествующих и зависимых ячеек в соответствии с цепочкой вычислений

Указанные API для отслеживания предшественников и зависимых основаны на самом выражении формулы. Они предоставляют удобный способ для пользователя отслеживать взаимозависимости нескольких формул. Если в рабочей книге много формул и нужно отслеживать предшественников и зависимых для каждой ячейки, производительность будет плохой. В такой ситуации рекомендуется использовать методы get_precedents_in_calculation и get_dependents_in_calculation, которые прослеживают зависимости по расчетной цепочке. Для этого сначала необходимо включить расчетную цепочку с помощью Workbook.settings.formula_settings.enable_calculation_chain, затем выполнить полный расчет рабочей книги с помощью Workbook.calculate_formula(). После этого можно отслеживать предшественников или зависимых для необходимых ячеек.

Для некоторых формул результатом предшествующих могут быть разные для GetPrecedents и GetPrecedentsInCalculation, а результатом зависимых могут быть разные для GetDependents и GetDependentsInCalculation. Например, если формула ячейки A1 - “=IF(TRUE,B2,C3)”, то GetPrecedents предоставит B2 и C3 как предшествующие ячейки для A1. Следовательно, B2 и C3 обе зависимы от A1 при проверке GetDependents. Однако для вычисления этой формулы очевидно, что только B2 может повлиять на результат. Поэтому GetPrecedentsInCalculation для A1 не предоставит C3, и GetDependentsInCalculation для C3 не предоставит A1. Иногда пользователь может иметь только требование отслеживания тех взаимосвязей, которые фактически влияют на результат вычислений формул на основе текущих данных книги, тогда им также необходимо использовать GetDependentsInCalculation/GetPrecedentsInCalculation вместо GetDependents/GetPrecedents.

Приведенный ниже пример демонстрирует, как отследить предшествующие и зависимые в соответствии с цепочкой вычислений для ячеек:

from aspose.cells import Workbook
workbook = Workbook()
cells = workbook.worksheets[0].cells
cells.get("A1").formula = "=B1+SUM(B1:B10)+[Book1.xls]Sheet1!B2"
cells.get("A2").formula = "=IF(TRUE,B2,B1)"
workbook.settings.formula_settings.enable_calculation_chain = True
workbook.calculate_formula()
en = cells.get("B1").get_dependents_in_calculation(False)
print("B1's calculation dependents:")
for c in en:
print(c.name)
en = cells.get("B2").get_dependents_in_calculation(False)
print("B2's calculation dependents:")
for c in en:
print(c.name)
en = cells.get("A1").get_precedents_in_calculation()
print("A1's calculation precedents:")
for r in en:
print(r)
en = cells.get("A2").get_precedents_in_calculation()
print("A2's calculation precedents:")
for r in en:
print(r)