VBA विकसित करके Excel में कक्षों की श्रेणी में a-z वर्णों की गणना कैसे करें। उदाहरण के लिए मेरे पास श्रेणी में नामों की एक सूची है (ए 1: ए 10) और मुझे सभी श्रेणियों में ए, बी, सी, ...., और जेड गिनने की ज़रूरत है?

मैंने लूप के साथ Chr (64 + i) और InStr पर प्रयास किया है, लेकिन मुझे केवल किस वर्ण का उपयोग किया गया है और उपयोग नहीं किया गया है, अक्षर की कुल संख्या नहीं।

  • मुझे प्रत्येक चरित्र की घटनाओं की संख्या खोजने की जरूरत है, उदाहरण के लिए ए = 20, बी = 12 और इस प्रकार।
  • परिणाम श्रेणी कोई फर्क नहीं पड़ता, हम इसे श्रेणी B1:C26 . में रख सकते हैं
-3
Elia 15 फरवरी 2019, 05:17

1 उत्तर

सबसे बढ़िया उत्तर

श्रेणी वर्ण गणना

कोड

Sub RangeCharactersCount()

    Const cSheet As String = "Sheet1"   ' Source Worksheet Name
    Const cSrc As String = "A1:A10"     ' Source Column Range
    Const cTgt As String = "B1"         ' Target First Cell Range
    Const c1 As Long = 65               ' First Character Code ("A")
    Const c2 As Long = 90               ' Last Character Code  ("Z")

    Dim vntS As Variant   ' Source Array
    Dim vntT As Variant   ' Target Array
    Dim i As Long         ' Source Array Element Counter, Character Counter
    Dim strB As String    ' Concat String
    Dim LenT As Long      ' Current Length

    ' Copy Source Column Range to Source Array.
    vntS = ThisWorkbook.Worksheets(cSheet).Range(cSrc)
    ' Loop through elements of Source Array.
    For i = 1 To UBound(vntS)
        ' Concatenate Concat String and current element of Source Array.
        strB = strB & vntS(i, 1)
    Next

    ' Resize Target Array to number of characters rows and 2 columns.
    ReDim vntT(1 To c2 - c1 + 1, 1 To 2)

    ' Loop through Characters.
    For i = c1 To c2
        ' Write length of Concat String to Current Length.
        LenT = Len(strB)
        ' Replace all occurrences of current letter with empty string ("").
        strB = Replace(strB, Chr(i), "", , , vbTextCompare)
        ' Write current letter to 1st column of Target Array.
        vntT(i - c1 + 1, 1) = Chr(i)
        ' Write number of occurrences (the difference between Current Length
        ' and the length of Concat String) of current letter to 2nd column of
        ' Target Array.
        vntT(i - c1 + 1, 2) = LenT - Len(strB)
    Next

    With ThisWorkbook.Worksheets(cSheet).Range(cTgt)
        ' Clear contents of Target Range (from Target First Cell Range to
        ' last cell of 2nd column).
        .Resize(.Parent.Rows.Count - .Row + 1, 2).ClearContents
        ' Copy Target Array to Target Range.
        .Resize(UBound(vntT), UBound(vntT, 2)) = vntT
    End With

End Sub
-3
VBasic2008 15 फरवरी 2019, 07:00