XLSX: Работа с формулами на странице XLSX
В этом разделе
UI-контролы
SpreadsheetEditorControl и
WpfSpreadsheetEditorControl позволяют работать (просмотривать, добавлять, редактировать и удалять) с формулами в ячейках рабочего листа XLSX в настольном приложении (WinForms, WPF).
Формулы можно изменять визуально с помощью мыши/клавиатуры или программно.
Добавление формулы в выделенную ячейку рабочего листа XLSX
Вот C#/VB.NET код, который демонстрирует, как добавить формулу в выделенную ячейку рабочего листа XLSX:
public void AddFormulaToXlsxCell(Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetEditorControl editorControl)
{
// get visual editor for spreadsheet document
Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetVisualEditor spreadsheetVisualEditor = editorControl.VisualEditor;
string formula = "ABS(A1)+SUM(B2,B3)";
// add formula to the focused cell
spreadsheetVisualEditor.InsertFormulaInFocusedCell(formula);
// result formula value: "=ABS(A1)+SUM(B2,B3)"
}
Public Sub AddFormulaToXlsxCell(editorControl As Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetEditorControl)
' get visual editor for spreadsheet document
Dim spreadsheetVisualEditor As Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetVisualEditor = editorControl.VisualEditor
Dim formula As String = "ABS(A1)+SUM(B2,B3)"
' add formula to the focused cell
spreadsheetVisualEditor.InsertFormulaInFocusedCell(formula)
' result formula value: "=ABS(A1)+SUM(B2,B3)"
End Sub
Изменение формулы выделенной ячейки программно
Вот C#/VB.NET код, который демонстрирует, как изменить формулу выделенной ячейки рабочего листа XLSX:
public void ChangeValueOfXlsxCell(Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetEditorControl editorControl)
{
// get visual editor for spreadsheet document
Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetVisualEditor spreadsheetVisualEditor = editorControl.VisualEditor;
// get value or formula of focused cell
string cellValue = spreadsheetVisualEditor.FocusedCellValue;
// set value or formula of focused cell
spreadsheetVisualEditor.FocusedCellValue = "0";
}
Public Sub ChangeValueOfXlsxCell(editorControl As Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetEditorControl)
' get visual editor for spreadsheet document
Dim spreadsheetVisualEditor As Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetVisualEditor = editorControl.VisualEditor
' get value or formula of focused cell
Dim cellValue As String = spreadsheetVisualEditor.FocusedCellValue
' set value or formula of focused cell
spreadsheetVisualEditor.FocusedCellValue = "0"
End Sub
Редактирование формулы сфокусированной ячейки с помощью мыши и клавиатуры
Вы можете редактировать формулу сфокусированной ячейки, используя текстовое поле на панели формул (внешний редактор) или используя текстовое поле в области ячейки (внутренний редактор).
Если вы хотите создать формулу, ссылающуюся на другую ячейку, вам следует выполнить следующие шаги:
- Начать редактирование значения ячейки
- Ввести символ '=' в значение ячейки
- Нажать на ячейку, на которую следует сослаться, и адрес ячейки будет добавлен в формулу.
Если вы хотите создать формулу, которая использует значений из нескольких ячеек, необходимо выполнить следующие действия:
- Начать редактирование значения ячейки
- Ввести символ '=' в значение ячейки
- Ввести имя формулы (например, "SUM") в значение ячейки
- Ввести символ '(' в поле значение ячейки
- Нажать клавишу Ctrl и щелкнуть ячейки, значения которых следует использовать в формуле, адреса ячеек будут добавлены в формулу
Если вы хотите просмотреть ячейки, которые используются в формуле, необходимо выполнить следующие действия:
- Начать редактирование значения ячейки
- Используемые ячейки будут выделены синими областями
- Используемая ячейка будет выделена красной областью, если текстовый курсор находится на адресе ячейки
- Используемые ячейки будут выделены красной областью, если текстовый курсор находится на области адресов ячеек
Удаление формулы выделенной ячейки рабочего листа XLSX
Если вы хотите удалить формулу выделенной ячейки листа XLSX с помощью мыши, вам необходимо выполнить следующие шаги:
- Нажать на ячейку, формулу которой следует удалить.
- Нажать клавишу "Del".
Вот C#/VB.NET код, который демонстрирует, как удалить формулу выделенной ячейки листа XLSX:
public void ClearXlsxCell(Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetEditorControl editorControl)
{
// get visual editor for spreadsheet document
Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetVisualEditor spreadsheetVisualEditor = editorControl.VisualEditor;
// clear contents (value and formula) of selected cells
spreadsheetVisualEditor.ClearCellsContents();
}
Public Sub ClearXlsxCell(editorControl As Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetEditorControl)
' get visual editor for spreadsheet document
Dim spreadsheetVisualEditor As Vintasoft.Imaging.Office.Spreadsheet.UI.SpreadsheetVisualEditor = editorControl.VisualEditor
' clear contents (value and formula) of selected cells
spreadsheetVisualEditor.ClearCellsContents()
End Sub
Список поддерживаемых формул
Вот список поддерживаемых формул "Дата и время":
- DATE - Вычисляет последовательную дату и время для заданной даты.
- DATEDIF - Вычисляет количество дней, месяцев или лет между двумя датами.
- DATEVALUE - Вычисляет последовательную дату и время даты, представленной строкой date-time-string, с учетом текущей системы дат.
- DAY - Вычисляет числовой день месяца в григорианском календаре для даты и/или времени, имеющего заданное значение даты, с учетом текущей системы дат.
- DAYS360 - Вычисляет знаковое количество дней между двумя датами на основе 360-дневного года (двенадцать месяцев по 30 дней).
- EDATE - Вычисляет последовательную дату и время даты, которая является месяцем со смещением месяцев от даты, указанной строкой даты даты, с учетом текущей системы дат.
- EOMONTH - Вычисляет последовательную дату и время последнего дня месяца для даты, которая является месяцем-смещением месяцев от даты, указанной датой начала-даты, с учетом текущей системы дат. .
- HOUR - Вычисляет час для даты и/или времени, имеющего заданное значение времени.
- MINUTE - Вычисляет минуты для даты и/или времени, имеющего заданное значение времени.
- MONTH - Вычисляет числовой месяц в григорианском календаре для даты и/или времени, имеющего заданное значение даты, с учетом текущей системы дат.
- NETWORKDAYS - Вычисляет количество полных рабочих дней между датой начала и датой окончания.
- NETWORKDAYS.INTL - Вычисляет числовой месяц в григорианском календаре для даты и/или времени, имеющего заданное значение даты, с учетом текущей системы дат.
- NOW - Вычисляет последовательную дату и время текущей даты и времени с учетом текущей системы дат.
- SECOND - Вычисляет секунду для даты и/или времени, имеющего заданное значение времени.
- TIME - Вычисляет последовательную дату и время для заданного времени.
- TIMEVALUE - Вычисляет последовательную дату и время времени, представленного строкой дата-время.
- TODAY - Вычисляет порядковый номер даты и времени текущей даты с учетом текущей базовой системы дат.
- WEEKDAY - Вычисляет номер дня недели для даты, имеющей заданный порядковый номер, принимая во внимание текущую систему дат и флаг начала дня недели, если он присутствует.
- WEEKNUM - Вычисляет номер недели даты, соответствующий значению даты.
- WORKDAY - Вычисляет последовательную дату и время даты, которая представляет собой смещение рабочих дней по отношению к начальной дате.
- WORKDAY.INTL - Вычисляет последовательную дату и время даты, которая представляет собой смещение рабочих дней по отношению к дате начала.
- YEAR - Вычисляет числовой год в григорианском календаре для даты и/или времени, имеющего заданное значение даты, с учетом текущей системы дат.
- YEARFRAC - Вычисляет дробное количество лет, представленное количеством целых дней между двумя датами: датой начала и датой окончания.
Вот список поддерживаемых "Инженерных" формул:
- BIN2DEC - Создает десятичный эквивалент числа.
- BIN2HEX - Создает шестнадцатеричный эквивалент числа в верхнем регистре, в результате чего получается число шестнадцатеричных цифр.
- BIN2OCT - Создает восьмеричный эквивалент числа, в результате чего получается число цифр из числа октетов.
- DEC2BIN - Создает двоичный эквивалент числа, в результате чего получается число цифр в количестве num-bin.
- DEC2HEX - Создает шестнадцатеричный эквивалент числа, в результате чего получается число шестнадцатеричных цифр.
- DEC2OCT - Создает восьмеричный эквивалент числа, при этом результат содержит цифры из числа октаров.
- DELTA - Сравнивает два числа на равенство.
- GESTEP - Проверяет, превышает ли значение числа значение шага или равно ему.
- HEX2BIN - Создает двоичный эквивалент числа.
- HEX2DEC - Создает десятичный эквивалент числа.
- HEX2OCT - Создает восьмеричный эквивалент числа, в результате чего получается число цифр из числа октетов.
- OCT2BIN - Создает двоичный эквивалент числа, в результате чего получается количество цифр в количестве num-bin.
- OCT2DEC - Создает десятичный эквивалент числа.
- OCT2HEX - Создает шестнадцатеричный эквивалент числа, в результате чего получается число шестнадцатеричных цифр.
Вот список поддерживаемых "Финансовых" формул:
- CUMIPMT - Вычисляет совокупные проценты, выплачиваемые по кредиту между начальным и конечным периодом.
- FV - Рассчитывает будущую стоимость инвестиций на основе периодических постоянных платежей и постоянной процентной ставки.
- IPMT - Рассчитывает выплату процентов за определенный период для инвестиций на основе периодических постоянных платежей и постоянной процентной ставки.
- PMT - Рассчитывает платеж по кредиту на основе постоянных платежей и постоянной процентной ставки.
- PPMT - Рассчитывает платеж по основной сумме за определенный период для инвестиций на основе периодические, постоянные платежи и постоянная процентная ставка.
Вот список поддерживаемых "Информационных" формул:
- CELL - Извлекает информацию о форматировании, расположении или содержимом верхней левой ячейки, указанной ссылкой.
- ISBLANK - Определяет, относится ли значение к пустой ячейке.
- ISERR - Определяет, является ли значение каким-либо из значений ошибки, кроме #N/A.
- ISERROR - Определяет, является ли значение каким-либо из значений ошибки.
- ISEVEN - Определяет, является ли значение четным числом или относится к ячейке, содержащей четное число.
- ISLOGICAL - Определяет, содержит ли значение логическое значение или относится к ячейке, содержащей логическое значение.
- ISNA - Определяет, является ли значение значением ошибки #N/A.
- ISNUMBER - Определяет, содержит ли значение число или относится к ячейке, содержащей число.
- ISODD - Определяет, является ли значение нечетным числом или относится к ячейке, содержащей нечетное число.
- NA - Получает значение ошибки #N/A.
Вот список поддерживаемых "Логических" формул:
- AND - Проверяет, все ли аргументы в списке аргументов имеют значение TRUE. Функция оценивает все аргументы перед возвратом значения.
- FALSE - Вычисляет значение FALSE.
- IF - Проверяет логическое значение.
- IFERROR - Обеспечивает более простой и эффективный способ перехвата и обработки ошибок.
- NOT - Вычисляет логическое отрицание логического значения.
- OR - Проверяет, имеют ли один или несколько аргументов в списке аргументов значение TRUE.
- TRUE - Вычисляет значение TRUE.
Вот список поддерживаемых формул "Ссылки и массивы":
- ADDRESS - Создает адрес ячейки по указанным номерам строк и столбцов.
- AREAS - Находит количество областей, указанных по ссылке.
- CHOOSE - Выбирает аргумент в списке аргументов, соответствующий по позиции индексу.
- COLUMN - Находит номер столбца(ов), соответствующего ссылке.
- COLUMNS - Находит количество столбцов, соответствующих массиву.
- HYPERLINK - Создает ярлык, открывающий документ, хранящийся на сетевом сервере, в интрасети или в Интернете.
- INDEX - Находит значение или ссылку на значение в таблице или диапазоне.
- INDIRECT - Находит ссылку, указанную в ref-text, и оценивает эту ссылку, чтобы получить ее базовое значение.
- LOOKUP - Векторная форма ищет значение в векторе и возвращает значение из той же позиции во втором векторе.
- MATCH - Находит относительную позицию элемента массива, который соответствует указанному значению в указанном порядке.
- OFFSET - Получает ссылку на диапазон, который представляет собой указанное количество строк и столбцов из ячейки или диапазона ячеек.
- ROW - Находит номер строки, соответствующей ссылке.
- ROWS - Находит количество строк, соответствующих массиву.
- VLOOKUP - Выполняет вертикальный поиск значения в крайнем левом столбце таблицы или массива, отмечая строку, в которой найдено соответствующее значение.
Вот список поддерживаемых "Математических и тригонометрических" формул:
- ABS - Вычисляет абсолютное значение x.
- ACOS - Вычисляет арккосинус x.
- ACOSH - Вычисляет обратный гиперболический косинус x.
- ASIN - Вычисляет арксинус x.
- ASINH - Вычисляет обратный гиперболический синус x.
- ATAN - Вычисляет арктангенс x.
- ATAN2 - Вычисляет арктангенс координат x и y.
- ATANH - Вычисляет обратный гиперболический тангенс x.
- CEILING - Вычисляет значение, округленное в большую сторону от нуля до ближайшего значения, кратного значению.
- COMBIN - Вычисляет возможное количество групп выбранного размера, которые могут быть сформированы из числовых объектов.
- COS - Вычисляет косинус x.
- COSH - Вычисляет гиперболический косинус x.
- DEGREES - Преобразует угол в радианах в градусы.
- ECMA.CEILING - Вычисляет значение, округленное по оси x от нуля до ближайшего значения, кратного значению.
- EVEN - Вычисляет x, округляемый до ближайшего четного целого числа, вдали от нуля.
- EXP - Вычисляет e^x, где константа e - это основание натурального логарифма.
- FACT - Вычисляет факториал x.
- FACTDOUBLE - Вычисляет двойной факториал n.
- FLOOR - Вычисляет x, округляемый в меньшую сторону, к нулю, до ближайшего кратного значения.
- GCD - Вычисляет наибольший общий делитель одного или нескольких чисел, обозначенных аргументами в списке аргументов.
- INT - Вычисляет x, округляемый до целого числа.
- ISO.CEILING - Вычисляет значение, округленное по x до ближайшего значения, кратного значению.
- LCM - Вычисляет значение, округленное по x до ближайшего значения, кратного значению.
- LN - Вычисляет натуральный логарифм x.
- LOG - Вычисляет логарифм x по основанию.
- LOG10 - Вычисляет логарифм по основанию 10 от x.
- MDETERM - Вычисляет определитель квадратной матрицы чисел, обозначенных массивом.
- MINVERSE - Вычисляет обратную квадратную матрицу чисел, обозначенных массивом.
- MMULT - Вычисляет произведение матриц чисел, обозначенных массивом-1 и массивом-2.
- MOD - Вычисляет остаток от деления x на y.
- MROUND - Вычисляет значение x, округленное до кратного, вдали от нуля.
- MULTINOMIAL - Вычисляет отношение факториала суммы значений в списке аргументов к произведению факториалов.
- ODD - Вычисляет x, округляемый до ближайшего нечетного целого числа, вдали от нуля.
- PI - Вычисляет значение π.
- POWER - Вычисляет x, возведенный в степень y.
- PRODUCT - Умножает числовые значения аргументов в списке аргументов.
- QUOTIENT - Вычисляет целую часть деления делимого на делитель.
- RADIANS - Преобразует угол в градусах в радианы.
- RAND - Вычисляет равномерно распределенное случайное действительное число, большее или равное 0, но меньше 1.
- RANDBETWEEN - Вычисляет случайное целое число в нижней границе диапазона - верхняя граница.
- ROMAN - Преобразует арабское число в римское число в соответствии с его формой.
- ROUND - Округляет x до количества цифр, заданного числом-цифр.
- ROUNDDOWN - Вычисляет x, округляемый в меньшую сторону, к нулю, до количества цифр, заданного числом-цифр.
- ROUNDUP - Вычисляет значение x, округленное в большую сторону от нуля до количества цифр, заданного числом-цифр.
- SERIESSUM - Вычисляет сумму степенного ряда.
- SIGN - Определяет знак x.
- SIN - Вычисляет синус x.
- SINH - Вычисляет гиперболический синус x.
- SQRT - Вычисляет положительный квадратный корень из x.
- SQRTPI - Вычисляет положительный квадратный корень из x × π.
- SUBTOTAL - Вычисляет значение с помощью функции, обозначенной номером функции, используя аргументы в списке аргументов.
- SUM - Добавляет числовые значения аргументов в список аргументов.
- SUMIF - Применяет критерии выбора к значениям в одном диапазоне ячеек и суммирует значения ячеек в соответствующем диапазоне.
- SUMIFS - Добавляет ячейки в диапазон, соответствующие нескольким критериям.
- SUMPRODUCT - Умножает соответствующие элементы в аргументах массива в списке аргументов и возвращает сумму этих произведений.
- SUMSQ - Добавляет квадраты аргументов в список аргументов.
- SUMX2MY2 - Вычисляет сумму разности квадратов соответствующих числовых элементов в двух массивах, обозначенных массивом-1 и массивом-2.
- SUMX2PY2 - Вычисляет сумму суммы квадратов соответствующих числовых элементов в двух массивах, обозначенных массивом-1 и массивом-2.
- SUMXMY2 - Вычисляет сумму квадратов разницы между соответствующими числовыми элементами в двух массивах, обозначенных массивом-1 и массивом-2.
- TAN - Вычисляет тангенс x.
- TANH - Вычисляет гиперболический тангенс x.
- TRUNC - Усекает x до количества дробных цифр числовыми цифрами.
Вот список поддерживаемых "Статистических" формул:
- AVERAGE - Вычисляет среднее арифметическое числовых значений своих аргументов.
- COUNT - Подсчитывает количество аргументов в списке аргументов, содержащих числа, и количество ячеек, на которые ссылаются аргументы в списке аргументов, содержащих числа.
- COUNTA - Подсчитывает количество аргументов, которые не являются ссылками на ячейки, а также количество ячеек, на которые ссылаются аргументы, которые не являются пустыми.
- COUNTBLANK - Подсчитывает количество пустых ячеек в указанном диапазоне ячеек.
- COUNTIF - Подсчитывает количество ячеек в указанном диапазоне ячеек, значения которых соответствуют указанным критериям.
- COUNTIFS - Подсчитывает количество ячеек в диапазоне, соответствующих нескольким критериям.
- FREQUENCY - Вычисляет, как часто значения встречаются в диапазоне значений. Вызов FREQUENCY должен быть формулой массива.
- LARGE - Вычисляет k-е наибольшее значение в наборе данных.
- MAX - Вычисляет наибольшее из набора чисел.
- MIN - Вычисляет наименьшее из набора чисел.
- SMALL - Вычисляет k-е наименьшее значение в наборе данных.
- STDEV - Оценивает стандартное отклонение на основе выборки.используя "несмещенный" или "n-1" метод.
- STDEVP - Вычисляет стандартное отклонение всей совокупности, используя "смещенный" или "n" метод.
- VAR - Оценивает дисперсию на основе выборки.
- VARP - Вычисляет дисперсию всей совокупности.
Вот список поддерживаемых "Текстовых" формул:
- BAHTTEXT - Создает строку, содержащую числа, отформатированные в соответствии с тайским соглашением.
- CHAR - Определяет символ, представленный числом значения.
- CLEAN - Создает строку, являющуюся копией строки, из которой удалены все так называемые "непечатаемые" символы, имеющие внутренние значения в диапазоне U+0000-001F.
- CODE - Определяет числовой код первого символа строки.
- CONCATENATE - Создает строку, которая представляет собой объединение всех строк, соответствующих аргументам в списке аргументов, взятых слева направо.
- DOLLAR - Создает строку, содержащую число, округленное до десятичных знаков.
- EXACT - Выполняет посимвольное лексическое сравнение строки 1 и строки 2 с учетом регистра.
- FIND - Выполняет поиск с учетом регистра с использованием лексическое сравнение первого вхождения строки-1 в строку-2, начиная с позиции символа start-pos в строке-2.
- FIXED - Создает строку, содержащую число, округленное до десятичных знаков, используя тот же алгоритм округления, что и ROUND.
- LEFT - Извлекает из строки самые левые числовые символы.
- LEN - Определяет количество символов в строке.
- LOWER - Создает версию строки в нижнем регистре путем посимвольного преобразования строки в нижний регистр, за исключением случаев, отмеченных ниже.
- MID - Извлекает числовые символы из строки, начиная с позиции символа start-pos.
- PROPER - Создает версию строки в нижнем регистре, за исключением того, что первая буква в строке и любые другие буквы в строке, следующие сразу за символом, не являющимся буквой, преобразуются в верхний регистр.
- REPLACE - Создает новую строку типа string-1 с числовыми символами, начинающимися с позиции start-pos, заменяемыми строкой-2.
- REPT - Создает строку, содержащую количество экземпляров строки, объединенных вместе.
- RIGHT - Извлекает из строки самые правые числовые символы.
- SEARCH - Выполняет поиск без учета регистра, используя лексическое сравнение, для первого вхождения строки-1 в строку-2, начиная с позиции символа start-pos в строке-2.
- SUBSTITUTE - Создает новую строку, в которой одно или все вхождения старой строки заменены новой строкой.
- T - Извлекает текст, на который ссылается значение.
- TEXT - Создает строку, содержащую значение, отформатированное в соответствии с форматом.
- TRIM - Создает строку, которая является копией строки с удаленными начальными и конечными пробелами, а каждая последовательность встроенных пробелов сокращается до одного пробела.
- UPPER - Создает версию строки в верхнем регистре.
- VALUE - Преобразует строку в число.