How to count up elements in excel

前端 未结 3 2020
伪装坚强ぢ
伪装坚强ぢ 2021-01-25 17:42

So I have a column called chemical formula for like 40,000 entries, and what I want to be able to do is count up how many elements are contained in the chemical formula. So for

3条回答
  •  既然无缘
    2021-01-25 17:55

    You could make your own formula.

    Open the VBA editor with ALT and F11 and insert a new module.

    Add a reference to Microsoft VBScript Regular Expressions 5.5 by clicking Tools, then references.

    Now add the following code:

    Public Function FormulaSplit(theFormula As String, theLetter As String) As String
    
        Dim RE As Object
        Set RE = CreateObject("VBScript.RegExp")
        With RE
            .Global = True
            .MultiLine = False
            .IgnoreCase = False
            .Pattern = "[A-Z]{1}[a-z]?"
        End With
    
        Dim Matches As Object
        Set Matches = RE.Execute(theFormula)
    
        Dim TheCollection As Collection
        Set TheCollection = New Collection
    
        Dim i As Integer
        Dim Match As Object
        For i = (Matches.Count - 1) To 0 Step -1
            Set Match = Matches.Item(i)
            TheCollection.Add Mid(theFormula, Match.FirstIndex + (Len(Match.Value) + 1)), UCase(Trim(Match.Value))
            theFormula = Left(theFormula, Match.FirstIndex)
        Next
    
        FormulaSplit = "Not found"
        On Error Resume Next
        FormulaSplit = TheCollection.Item(UCase(Trim(theLetter)))
        On Error GoTo 0
    
        If FormulaSplit = "" Then
            FormulaSplit = "1"
        End If
    
        Set RE = Nothing
        Set Matches = Nothing
        Set Match = Nothing
        Set TheCollection = Nothing
    
    End Function
    

    Usage:

    • FormulaSplit("C40H66O5", "H") would return 66.
    • FormulaSplit("C40H66O5", "O") would return 5.
    • FormulaSplit("C40H66O5", "blah") would return "Not found".

    You can use this formula directly in your workbook. Example of FormulaSplit usage in Workbook

提交回复
热议问题