Mode Text 2nd most common text value

我是研究僧i 提交于 2020-07-19 04:28:47

问题


IFERROR(INDEX($I$7:$I,MODE(IF($I$7:$I<>"",MATCH($I$7:$I,$I$7:$I,0)))),"No data")

With this formula, which calculates the most common text value, I need to have the 2nd most common.

Column I content:

Apple

Orange

Apple

Apple

Orange

In this example, I need to get Orange. How is that possible? I can't figure how.


回答1:


You can extract the most frequent item in the list with an array formula.

=INDEX(MyList,MATCH(MAX(COUNTIF(MyList,MyList)),COUNTIF(MyList,MyList),0))

Note that an array formula must be confirmed with Shift+Ctl+Enter instead of the customary singular Enter required for normal formulas. When entered wrongly it will display a #NUM! error.

For simplicity's sake I have used a named range MyList in the formula. However, if you prefer, you can replace the name with something like $I$7:$I$1000.

To extract the second-most frequent expression in the list you could use a formula constructed analogue to the above.

=INDEX(MyList,MATCH(LARGE(COUNTIF(MyList,MyList),MAX(COUNTIF(MyList,MyList))+1),COUNTIF(MyList,MyList),0))

This formula is built on the logic that n equals the highest number of occurrences. Therefore the second highest must rank as n + 1, being MAX(COUNTIF(MyList,MyList))+1) in the above formula. By the same method the third ranked could be extracted.

You can embed these formulas in an IFERROR() function.




回答2:


I found this on Mr Excel

Return most common, 2nd most common, 3rd most common, etc. text string in an array

Spreadsheet Formulas

Cell ___ Formula 'Notice that the cells are B2, D2, E2. Column C is blank

B2  =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=COUNTIF($A$2:$A$100,A2),COUNTIF($A$2:$A$100,A2)+(ROW()/1000),""))
D2  =IF(ROWS($1:1)>COUNT(B:B),"",INDEX(A:A,MATCH(LARGE(B:B,ROWS($1:1)),B:B,0)))
E2  =IF(D2="","",COUNTIF($A$2:$A$100,D2))<br><br>

Results

___ A ________ B ___C ___D _________E

1 Data Set:___Helper ____ Name ____ Occurrences
2 Harmon _____________ Williams ______4
3 Smith _______________ Smith ________3
4 Smith _______________ Harmon ______2
5 Harmon_____ 2.005
6 Williams
7 Williams
8 Smith _______3.008
9 Williams
10 Williams ____4.010




回答3:


A PivotTable might suit:

and copes with ties for rank.




回答4:


you can try to tie this all together in a single formula but it's simpler and more agile in a spreadsheet environment to just break out the problem in a few separate steps.

take a given column of values you're wanting to count/rank - i'll call it RankList in examples below.

if you're not setting named ranges (do yourself a favor and use named ranges) you'll want this to be your column range - i.e. A:A

now in another column use

=unique(RankList)

there's your list of unique values, now we just need to count the instances of each unique value in the original RankList - this is simple - in the next column over simply use

=countif(RankList,B1)

B1 above represents the cell adjacent to the formula, wherever that might be on your sheet. now autofill the formula in with the relative cell value for each item. now all of your items are counted by instance.

now we want to sort them by value, highest to lowest. create another named range, selecting the two columns containing the =unique(RankList) and =countif(RankList,B1) formulas that were just created, i'll refer to it as UniqueCount

use the following

=sort(UniqueCount, 2, false)

that's it. again you can accomplish this by stacking formulas like in the above examples, but in practice i've found that you won't know what you'll want to do additionally with your data/sheet later on. keeping it broken up in discrete steps like this makes it much easier to make adjustments.



来源:https://stackoverflow.com/questions/47472785/mode-text-2nd-most-common-text-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!