• ベストアンサー

セルの中で数値を検索したいのですが

ある数値をランク関数で、ランク付けしてます。 1~10位の間でランクし、これを検索したいわけですが 普通に検索するだけだと、MATCH関数でいけるんですが たまに、数値が同じになり、5位が複数になったりすると 一つ目の5位はいけても、二つ目の5位が検索できずに#N/Aになってしまいます。 こういう場合に、1つ目の5位、2つ目の5位 という感じで 分けて検索できるような関数、もしくは方法はあるのでしょうか? 良い知恵お持ちの方いらっしゃいましたら助けていただけませんでしょうか^^;

質問者が選んだベストアンサー

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.2

◆このような順位付けをしてはいかがでしょうか? 表1     A  B  C  D  E  F  G  H  H  I   01  2  4  5  2  3  7  1  4  2  5   02  4  4  2  3  4  5  2  6  7 10   03 04 05 06 07 08  6  8  7  5  7 12  3 10  9 15   09  3  6  4  2  5  9  1  8  7 10 >9行目では、これらの数値を数値の少ない順にランク関数でランクをつけています A9=RANK(A8,$A$8:$J$8,1)+COUNTIF($A$8:A8,A8)-1 ★右にコピー ★これですと、E9は「5」になります

mazdaFD3
質問者

お礼

maron--5様、2件もの詳細なご回答ありがとうございます^^ 両方拝見したのですが、ANo.3でいただいたご回答は私には難しいのと、イメージ的にはANo.2の内容の方が助かりました^^; 4位が二つある状態よりも、無理やりでも重複ランクをなくした状態の方が、便利ですし、複雑な式よりも柔軟な考え方の方が大事であると勉強になりました^^

その他の回答 (2)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

◆どうしても、4が2つあるような同じ順位付けをするのであれば 表1をSheet1とし、表2をSheet2としますと ★表2(Sheet2)     A  B  C  D  E  F     01  1  7 02  2  4 03  3  1 04  4  3 05  5  5 06  6  2 07  7  9 08  8  8 09  9  6 10 10 10 ◆式1 B1=SUMPRODUCT((SMALL(Sheet1!$A$9:$J$9+COLUMN(Sheet1!$A$9:$J$9)*10^-5,A1)=Sheet1!$A$9:$J$9+COLUMN(Sheet1!$A$9:$J$9)*10^-5)*COLUMN($A:$J)) ★下にコピー ◆式2(MATCH関数を使用するのであれば) B1=MATCH(SMALL(Sheet1!$A$9:$J$9+COLUMN(Sheet1!$A$9:$J$9)*10^-5,A1),Sheet1!$A$9:$J$9+COLUMN(Sheet1!$A$9:$J$9)*10^-5,0) ★この式は「配列数式」です。式を入力後、Ctrl+Shift+Enter をおして、式を確定させてください。 ★確定すると、式の両端に{ }がつきます。 ★式を確定させてから、下にコピー

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆方法はあります ★抽象的な質問にはこのような回答にならざるを得ません ★具体的な表を示していただけば、具体的な回答をさせていただけると思います

mazdaFD3
質問者

補足

maron--5さん、回答ありがとうございます。 簡素すぎてしまったようです、失礼しました。 以前、別の方に冗長すぎる質問は読む気すら起きない、と注意を受けたものですから^^;  以下のような、表1があったとします。 表1     A  B  C  D  E  F  G  H  H  I   01  2  4  5  2  3  7  1  4  2  5   02  4  4  2  3  4  5  2  6  7 10   03 04 05 06 07 08  6  8  7  5  7 12  3 10  9 15   09  3  6  4  2  4  9  1  8  7 10 表1では、1~7行目まで別表からの数値が入っています。 この表では説明の便宜上、2行目までのみ数値を記入しています。 8行目では、1~7行目の数値を合計した数値が入ります。 この場合、1行目+2行目の数値がA8~I8の行に10個あります。 9行目では、これらの数値を数値の少ない順にランク関数でランクをつけています。 この場合、G8が最も少ない合計数ですので、ランクは1位になり、最も多いI8が10位になります。 以下のような、表2があったとします。 表2     A  B  C  D  E  F     01  1  7 02  2  4 03  3  1 04  4  3 05  5 #N/A 06  6  2 07  7  9 08  8  8 09  9  6 10 10 10 表2では、A列に1~10位を示す数値が入ります。これは固定数値です。 B列では、MATCH関数を用いて、表1の9行目の数値を検索しています。 例えば、表2のA1は1(1位)ですが、表1の9行目で、7個目になりますので7になり 同じように、A2の2(2位)は4個目になりますのでB2は4になります。 表1の9行目では、4位がC9とE9に二つあるため、5位はありませんので、B5では数値が検索できず#N/Aになります。 これを、#N/Aにならずに、一つ目の4位(B4)が3だった場合は、5位(B5)に二つ目の4位として、5を入れたいのです。 ランクは10位までしかないので、この場合B列の中には1~10のランクの中では5のみ存在しませんので、自動的に5が入るという感じです。 現在のところ、重複するランクが2つ出たことはありませんので、表2の例のようなケースのみを考えているのですが もし、重複するランクが2つ以上発生した場合の対応方法も合わせてご質問させていただきたいと思います。 改めて、このような場合における、関数。または解決できる方法がございましたらご教示いただけませんでしょうか^^;  

関連するQ&A