Подсчитайте количество переменных в формуле - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь собрать некоторые данные, которые были потеряны для моего офиса. Одна вещь, которая может сделать жизнь экспоненциально лучше - это возможность подсчитать количество переменных в формуле. Например:

=500+500+500

В идеале я хотел бы вернуть «3» в этой ситуации, поскольку в приведенной выше формуле есть три «переменные». Сейчас я использую формулу для получения точного значения из конкретной ячейки, но я хотел бы добавить что-то, что позволило бы мне также выводить число переменных в формуле / расчете.

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Если единственным оператором является +, то получится счет:

=LEN(FORMULATEXT(A1))-LEN(SUBSTITUTE(FORMULATEXT(A1),"+",""))+1

enter image description here

1 голос
/ 17 октября 2019

Поскольку у вас могут быть разные операторы, кроме знака +, вы можете сделать что-то подобное в VBA:

Function count_parts(rngFormula As Range) As Integer

    'Create an array with all the operators you want to account for
    Dim operatorArray As Variant, operator As Variant
    operatorArray = Array("+", "-", "/", "*")

    'Capture the formula in the cell passed in
    Dim strFormIn As String: strFormIn = rngFormula.Formula
    Dim strFormOut As String: strFormOut = strFormIn

    'Loop through the operators in the array and swap them out
    'So the strFormOut is completely rid of them all
    For Each operator In operatorArray
        strFormOut = Replace(strFormOut, operator, "")
    Next

    'Count the difference in characters between our starting
    'formula and the formula without operators, subtracting 1.
    count_parts = Len(strFormIn) - Len(strFormOut) + 1
End Function

Если + является единственным оператором, который вы должны учитывать, тогдаМожно использовать гораздо более простую функцию:

Function count_parts(rngFormula As Range) As Integer
    count_parts = UBound(Split(rngFormula.Formula, "+")) + 1
End Function

Вы можете вставить любой из них в новый модуль в вашем VBE, и после сохранения книги вы можете использовать эту формулу в такой ячейке, как =count_parts(A1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...