

No.2
- 回答日時:
配列数式NGだと、作業列を使わないと出来ませんでした。
A列に数値が並んでいるとします。
B列に2番目に頻度が大きい数を表示します。
作業列
D1
=IF(COUNTIF($A$1:A1,A1)=1,COUNTIF(A:A,A1),"")
下へコピー
E1
=LARGE(D:D,2)
F1
=IF(D1=$E$1,ROW(A1),"")
下へコピー
B1
=IFERROR(INDEX(A:A,SMALL(F:F,ROW(A1))),"")
下へコピー

No.1
- 回答日時:
配列数式やマクロを使わない理由を教えていただきたく思います。
どんな理由があるのでしょうか。例えば、下位バージョンであるとか。
ただ、私は関数は不得意ですから、もっと良い解答があるはずだと思います。
④のRANK.EQ は、2003等の下位バージョンではなかったと思います。
①
A1:A50 が乱数で1~99までの数字があるとします。
②
B1から、B50 まで、COUNTIFで、
=COUNTIF($A$1:$A$50,A1)
B1を50行目までクリックコピー(セルの右端下の黒丸をクリック)
③
C1から、C50 まで、RANK 関数で、順位を取ります。
=RANK(B1,$B$1:$B$50)
C1を50行目までクリックコピー
④
D1に以下の数式を置き、
=RANK.EQ(A1,$A$1:$A$50)
D2 から、D50 までを、RANK.EQ 関数で、順位の位置を取ります。
=IF(COUNTIF($D$1:D1,RANK.EQ(A2,$A$1:$A$50)),"",RANK.EQ(A2,$A$1:$A$50))
D2を50行目までクリックコピー
⑤
E1から、E50 まで、以下の数式を置きます。
=IF(D1="","",C1+D1/100)
E1を50行目までクリックコピー
⑥
F1から、適当な位置まで、以下の数式を置きます。
=SMALL($E$1:$E$50,ROW(A1))
F1をドラッグコピー
⑦
G1から、適当の場所まで、ドラッグコピーします。
=INDEX($A$1:$A$50,MATCH(F1,$E$1:$E$50,0))
上から順に頻度の高いものが出てきます。
F列の整数値が同じものは、同列です。
以下は、その計算イメージです。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
一番多く表示のある値(文字列)を、Excel関数で抽出したい
Excel(エクセル)
-
[エクセル]データの個数が2番目や3番目のものを表示するには?
Excel(エクセル)
-
VBAでMODE関数をつくる
Visual Basic(VBA)
-
-
4
一番多い名字(文字)のランキングを作りたい
Excel(エクセル)
-
5
エクセル関数 頻度順に並べる方法は?
Excel(エクセル)
-
6
Excel データの最大値と2番目の項目名を表示させたい
Excel(エクセル)
-
7
最も多い文字列を検索するには
Visual Basic(VBA)
-
8
MODE関数を文字でできる関数はないでしょうか
ネットワーク
-
9
MODE関数で
Excel(エクセル)
-
10
最小頻度値(?)をエクセルで求める方法を教えてください
Excel(エクセル)
-
11
MIN関数で空白セルを無視したいのですが
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】3つのセルの中で最新...
-
LibreOffice Clalc(またはエク...
-
【マクロ】数式を入力したい。...
-
【マクロ】excelファイルを開く...
-
エクセルの関数について
-
【マクロ】変数に入れるコード...
-
エクセルのリストについて
-
【マクロ】左のブックと右のブ...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
エクセルのVBAで集計をしたい
-
【マクロ】元データと同じお客...
-
Office2021のエクセルで米国株...
-
【マクロ】【配列】3つのシー...
-
【画像あり】オートフィルター...
-
vba テキストボックスとリフト...
-
他のシートの検索
-
【マクロ画像あり】❶1つの条件...
-
エクセルの複雑なシフト表から...
-
【関数】=EXACT(a1,b1) a1とb1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報
Excelのバージョン表記をしていませんでした。
Excel 2002(XP)です。
また、配列数式を試用しない理由は、他の人も使うワークシートであり
そのセルをうっかり編集モードにしてしまった際に、
[Ctrl]+[Shift]+[Enter]キーを押してもらえる可能性がほぼゼロに近いと思われるからです。
やはり作業列が必要ですか?
実際の作業は、マークシート方式のテストの採点で、
その後の解説のため、どんな誤答が多いのかを調べたいというものです。
対象は800人近くで、テストは100問近くあるため、作業列を作るには
列数の制限があるので別シートを使うしか無いですかね。
1行の式でできる方法があれば助かります。
できるだけ簡略化したい理由は、
・自分しか使用しないものではない。
(他の人に使用させる必要もある)
・自分が担当しなくなっても、他の人でも簡単に理解して編集(変更)できるようにしたい
(マクロを知っている人はほとんどいない)
というもので、できるだけ迷惑をかけないで済むようにしたいからです。
その為、配列数式も使用したくないのです。
他の人が作った資料で、読み解くのに本当に苦労した経験があるので、
それをくり返したくないのです。
せっかく教えて頂いたのですが、2番目に多い値にはならず正しい結果が出ませんでした。
たとえば、データがA1セルから縦に 1,1,1,1,1,2,2,2,3,3,3,3 と12個はいっている場合
B1は、=MODE(A1:A12) を入れて 「1」という結果が出ます。
B2には、=MODE(A1:A12+((A1:A12=B1)+(A1:A12=""))/ROW($1:$12)) を
入れてやると、「2」という結果になります。
本当は「3」じゃないと駄目ですよね。
個人的には、難解な数式ではなくて、「ああ、そうか! そこに気づけば良かったか!」という
感じの数式にならないだろうか、という気持ちで質問しました。
別のシートで度数表を作成しておいて、RANK関数で順位を出しておくだけでも良いのかなという
気になってきました。