Tìm số lượng ký tự cụ thể trong một công thức


2

Tôi đang cố gắng tìm số lượng +công thức trong một ô trong excel.

Nếu đó là một ô bình thường có văn bản bên trong, điều này sẽ khá dễ dàng. Nhưng do các hạn chế của tệp tôi đang làm việc, tôi cần giữ định dạng của ô như hiện tại.

Nói ngắn gọn:

  • Tế bào A1:=123,12+234,45+790,44
  • Ô A2: =2, như đã tìm thấy hai + trong ô A1

Giải pháp VBA có ổn không?
jonsca

Câu trả lời:


3

Bạn có thể sử dụng chức năng vba tùy chỉnh (đặt mã này trong mô-đun):

Option Explicit

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

Và sau đó sử dụng chức năng này trong Bảng tính của bạn:

=countChar(A1;"+")

Tốt thời gian, và rất ngắn gọn hehe!
jonsca

@jonsca: thực sự, cú sút đẹp :)
JMax

2

VBA

Tạo một hàm bằng mã này:

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

Các ff. công thức sẽ hiển thị số lần xuất hiện của "+" trong đó.

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

Không phải VBA

Làm nổi bật các ô có chứa công thức. Nếu bạn chỉ cần xử lý một ô, chỉ cần thêm một ô 'trước =và bỏ qua bước tiếp theo.

Nhấn Ctrl+ H. Nhập =vào Tìm gì'=vào Thay thế bằng . Điều này sẽ chuyển đổi công thức thành văn bản.

Sử dụng công thức này trong một ô trống để đếm số lần xuất hiện của "+".

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

Để hoàn nguyên các ô trở lại như cũ, hãy tô sáng chúng, nhấn Ctrl+ Hvà thay thế '=bằng =. Làm như vậy sẽ khiến công thức trên hiển thị 0.


1

Hàm này sẽ lấy công thức của ô được truyền cho nó (nghĩa là bạn gọi nó bằng =NumPlus(A1)bảng tính của bạn) và đi dọc theo nó và đếm các dấu cộng. Bạn có thể sửa đổi nó một chút để lấy một ký tự mà bạn muốn tính là một đối số.

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.