2

Я пытаюсь найти количество + в формуле внутри одной ячейки в Excel.

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

Короче:

  • Ячейка A1: =123,12+234,45+790,44
  • Ячейка A2: =2 , так как в ячейке A1 найдено два +

3 ответа3

3

Вы можете использовать пользовательскую функцию vba (поместите этот код в модуль):

Option Explicit

Function countChar(cell As Range, pattern As String)
    countChar = UBound(Split(cell.Formula, pattern))
End Function

А затем используйте эту функцию в вашем рабочем листе:

=countChar(A1;"+")
2

VBA

Создайте функцию, используя этот код:

Function GETFORMULA(c As Range) As String
    If c.HasArray Then
        GETFORMULA = "{" & c.Formula & "}"
    ElseIf VarType(c) = vbString And Not c.HasFormula Then
        GETFORMULA = c.Value
    Else
        GETFORMULA = c.Formula
    End If
End Function

Фф. Формула будет отображать количество вхождений "+" в нем.

=LEN(GETFORMULA(cell))-LEN(SUBSTITUTE(GETFORMULA(cell),"+",""))  

Non-VBA

Выделите ячейки, которые содержат формулы. Если вам нужно иметь дело только с одной ячейкой, просто добавьте ' перед = и пропустите следующий шаг.

Нажмите Ctrl + H. Введите = в Найти что и '= в Заменить на. Это преобразует формулу в текст.

Используйте эту формулу в пустой ячейке, чтобы подсчитать количество вхождений «+».

=LEN(cell)-LEN(SUBSTITUTE(cell,"+",""))

Чтобы вернуть ячейки обратно в прежнее состояние, выделите их, нажмите Ctrl + H и замените '= на = . Это приведет к тому, что формула выше покажет 0.

1

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

Option Explicit
Function NumPlus(cel As Variant) As Variant
    Dim formstr As String
    Dim i As Integer

    NumPlus = 0
    formstr = cel.Formula

    For i = 1 To Len(formstr)
        If Mid(formstr, i, 1) = "+" Then
            NumPlus = NumPlus + 1
        End If
    Next i
End Function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .