Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
i=1 -- array2(1) = 3 (occurrences of "2"),
i=2 -- array2(2) = 2 (occurrences of "4"), i=3 -- array2(3) = 2 (occurrences of "3"). Hi. One idea is to use a Dictionary Object. Here is a general idea. I understand you only want an array of those items with a count 1. Sub Demo_Tally() Dim d Dim p Dim n, k Dim v v = Array(1, 2, 4, 6, 5, 4, 7, 2, 3, 2, 3) Set d = CreateObject("Scripting.Dictionary") ' Add Key, Item (Both Required) '// Tally items For p = LBound(v) To UBound(v) n = v(p) If d.exists(n) Then d(n) = d(n) + 1 Else d.Add n, 1 End If Next p '// Remove items with Count = 1 For Each k In d.keys If d(k) = 1 Then d.Remove (k) Next k '// Display items For Each k In d.keys Debug.Print k, d(k) Next k End Sub Returns: Item | Count 2 3 4 2 3 2 -- HTH :) Dana DeLouis Windows XP & Excel 2007 "a.riva@UCL" wrote in message ups.com... Thanks for all the suggestions! The code that Dana sent is working very well, and it's really simple :-) Now I have an other question... I have my usual option-based-1 array1 in VBA, which contains x numbers. Some of them are repeated. What I would like to do is creating an other option-based-1 array, let's call it array2, which contains the numbers of occurrences of each of the repeated elements of array1 within array1... I'm struggling to find a solution... For example: option-based-1 array1 is (1, 2, 4, 6, 5, 4, 7, 2, 3, 2, 3) -- I cannot sort the array. I think that the procedure should do the following operation: it detects how many items are repeated in "array1", and for each of this repeated items stores in a new array "array2" a number corresponding to the number of its occurrences. For example, in array1 the procedure detects that there are n=3 items which occur more than once (they are "2", "4" and "3"). Then it ReDims array2 (1 to n), and for i=1 to n it gives to array2(i) the values of: i=1 -- array2(1) = 3 (occurrences of "2"), i=2 -- array2(2) = 2 (occurrences of "4"), i=3 -- array2(3) = 2 (occurrences of "3"). Can somebody help me? Thanks in advance :-) Antonio. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Ranking function | Excel Worksheet Functions | |||
Ranking without preset Excel function. | Excel Worksheet Functions | |||
Ranking Function | Excel Worksheet Functions | |||
can excel draw with preset values | Excel Discussion (Misc queries) | |||
Is there anyway to add more than the preset 265 columns in Excel? | Excel Discussion (Misc queries) |