Count all values of each row from smaller to larger

motilulla

Well-known Member
Joined
Feb 13, 2008
Messages
2,360
Office Version
  1. 2010
Hello,</SPAN>

I want to count from smaller to larger valve of each row and put them in one cell separated by vertical bar. Is it possible?</SPAN></SPAN>

As per example below</SPAN></SPAN>


Book1
ABCDEFGHIJKLMNOPQRS
1
2
3
4
5n1n2n3n4n5n6n7n8n9n10n11n12n13n14Count Smaller to Larger
6
7100010101100106 | 8
8211021002011006 | 5 | 3
9300030103100108 | 3 | 3
10400140200210008 | 2 | 2 | 2
11010200300321008 | 2 | 2 | 2
12121311001000016 | 6 | 1 | 1
13200400010010109 | 3 | 1
14011501000100208 | 4 | 1 | 1
15000612101201315 | 5 | 2 | 1 | 1
160201101000000010 | 3 | 1
17101020201111105 | 7 | 2
182000010000000111 | 2
19000060150260137 | 2 | 1 | 1 | 1 | 2
20111070260301205 | 4 | 2 | 1 | 1 | 1
210020000100400011 | 1 | 1 | 1
220010000000021011 | 2 | 1
23012111011110204 | 8 | 2 |
24123222000201006 | 2 | 5 | 1
25034033101000116 | 4 | 3 | 1
26105040210100207 | 3 | 2 | 1 | 1
27210001321011006 | 5 | 2 | 1
28001110402022106 | 4 | 3 | 1
Sheet1


Thank you all</SPAN></SPAN>

Excel 2000</SPAN></SPAN>
Regards,</SPAN>
Moti</SPAN>
</SPAN></SPAN>
 
Last edited:
NPV is available in 2003, but don't know about 2000
However IFERROR is not available in 2000
Thank you Fluff, for clearing about NPV that is why formula is not working does there could be a VBA solution for this trouble? </SPAN></SPAN>

Kind Regards,
</SPAN></SPAN>
Moti
</SPAN> </SPAN>
 
Upvote 0

Excel Facts

Remove leading & trailing spaces
Save as CSV to remove all leading and trailing spaces. It is faster than using TRIM().
My mistake. Of course it's the IFERROR (and potentially also NPV, though I thought that was available in 2000), which is causing the error.



Ah, in that case unfortunately this will not be possible using worksheet formulas alone with your version of Excel. You'll require some VBA. Are you ok with that?

Regards
XOR LX, yes Please if it is possible I would like to have VBA solution
 
Last edited:
Upvote 0
Ah, wait. I'm mistaken again. It's not the entries within those columns which is a restriction on a formula solution, but the number of columns being queried.

I see that you have only 14 columns, so we can just do it.

Try this array formula** and get back to me. Otherwise we'll try the VBA!

=SUBSTITUTE(TEXT(SUM(10^(ROW(INDIRECT("1:"&COUNT(1/FREQUENCY(D7:Q7,D7:Q7))))-1)*COUNTIF(D7:Q7,LARGE(IF(FREQUENCY(D7:Q7,D7:Q7),TRANSPOSE(D7:Q7)),ROW(INDIRECT("1:"&COUNT(1/FREQUENCY(D7:Q7,D7:Q7))))))),REPT("# | ",COUNT(1/FREQUENCY(D7:Q7,D7:Q7))))," | ","",COUNT(1/FREQUENCY(D7:Q7,D7:Q7)))

Regards
 
Upvote 0
Ah, wait. I'm mistaken again. It's not the entries within those columns which is a restriction on a formula solution, but the number of columns being queried.

I see that you have only 14 columns, so we can just do it.

Try this array formula** and get back to me. Otherwise we'll try the VBA!

=SUBSTITUTE(TEXT(SUM(10^(ROW(INDIRECT("1:"&COUNT(1/FREQUENCY(D7:Q7,D7:Q7))))-1)*COUNTIF(D7:Q7,LARGE(IF(FREQUENCY(D7:Q7,D7:Q7),TRANSPOSE(D7:Q7)),ROW(INDIRECT("1:"&COUNT(1/FREQUENCY(D7:Q7,D7:Q7))))))),REPT("# | ",COUNT(1/FREQUENCY(D7:Q7,D7:Q7))))," | ","",COUNT(1/FREQUENCY(D7:Q7,D7:Q7)))

Regards
XOR LX, I cannot use this formula because "COUNTIF" also does not support Excel 2000. I think what you thought it would be great if you can build a VBA solution Please. </SPAN></SPAN>

Thank you
</SPAN></SPAN>

Kind Regards,
</SPAN></SPAN>
Moti
</SPAN></SPAN>
 
Upvote 0
XOR LX, I cannot use this formula because "COUNTIF" also does not support Excel 2000. I think what you thought it would be great if you can build a VBA solution Please.

Thank you


Kind Regards,

Moti


Ok, just realised it was flawed in any case as it wouldn't work if a given value occurred more than 9 times within the row.

Will get back to you soon with some VBA.

Regards
 
Upvote 0
Ok, just realised it was flawed in any case as it wouldn't work if a given value occurred more than 9 times within the row.

Will get back to you soon with some VBA.

Regards
Thank you XOR LX
 
Last edited:
Upvote 0
Hi, motilulla
Try this:

Code:
Sub a1082382a()
'https://www.mrexcel.com/forum/excel-questions/1082382-count-all-values-each-row-smaller-larger.htmlDim vso As Object
Dim va, vb
Dim i As Long, j As Long, k As Long, s As Long
Dim d As Object, vso As Object, x As Variant
va = Range("D7", Cells(Rows.count, "Q").End(xlUp))
ReDim vb(1 To UBound(va, 1), 1 To 1)

For j = 1 To UBound(va, 1)
    Set vso = CreateObject("System.Collections.Sortedlist")
    Set d = CreateObject("scripting.dictionary")
    
    For k = 1 To UBound(va, 2)
        s = va(j, k)
        If Not d.Exists(s) Then
            d(s) = 1
            Else
            d(s) = d(s) + 1
        End If
    Next

    For Each x In d
        vso.Add x, d.Item(x)
    Next
    
    For i = 0 To vso.count - 1
        vb(j, 1) = vb(j, 1) & "|" & vso.GetByIndex(i)
    Next
    
    vb(j, 1) = Right(vb(j, 1), Len(vb(j, 1)) - 1)
    
    
Next

Range("S7").Resize(UBound(vb, 1), 1) = vb
End Sub
 
Upvote 0
Hi, motilulla
Try this:

Code:
Sub a1082382a()
'https://www.mrexcel.com/forum/excel-questions/1082382-count-all-values-each-row-smaller-larger.htmlDim vso As Object
Dim va, vb
Dim i As Long, j As Long, k As Long, s As Long
Dim d As Object, vso As Object, x As Variant
va = Range("D7", Cells(Rows.count, "Q").End(xlUp))
ReDim vb(1 To UBound(va, 1), 1 To 1)

For j = 1 To UBound(va, 1)
    Set vso = CreateObject("System.Collections.Sortedlist")
    Set d = CreateObject("scripting.dictionary")
    
    For k = 1 To UBound(va, 2)
        s = va(j, k)
        If Not d.Exists(s) Then
            d(s) = 1
            Else
            d(s) = d(s) + 1
        End If
    Next

    For Each x In d
        vso.Add x, d.Item(x)
    Next
    
    For i = 0 To vso.count - 1
        vb(j, 1) = vb(j, 1) & "|" & vso.GetByIndex(i)
    Next
    
    vb(j, 1) = Right(vb(j, 1), Len(vb(j, 1)) - 1)
    
    
Next

Range("S7").Resize(UBound(vb, 1), 1) = vb
End Sub
Akuini, your VBA code work very perfect! Thank you very much for the help!</SPAN></SPAN>

Query solved!

Kind Regards,
</SPAN></SPAN>
Moti
</SPAN></SPAN>:)
 
Upvote 0
Hello Akuini, I am wondering this VBA were working perfect till last month, tried today it stop at the line below
Code:
 Set vso = CreateObject("System.Collections.Sortedlist")
and giving an error Run- time error'-2146232576 (80131700)': Automation error I goggled to find the solution but do not get the answer

Please need help do you have any idea what is wrong? I am running excel 2000


Kind Regards,
Moti
 
Upvote 0

Forum statistics

Threads
1,214,520
Messages
6,120,013
Members
448,935
Latest member
ijat

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top