プロが教える店舗&オフィスのセキュリティ対策術

MATCH関数で検索範囲内に同じ値の検索値が複数ある場合の処理に悩んでいます。


(Sheet1)
ABCD
名称点数順位備考
あああ806アアア
いいい903イイイ
ううう855ウウウ
えええ903エエエ
おおお806オオオ
かかか709カカカ
ききき806キキキ
くくく6010ククク
けけけ1001ケケケ
こここ952コココ

C2=RANK(B2,B$2:B$11)


Sheet1のこの表からSheet2に


(Sheet2)
順位名称点数備考
1けけけ100ケケケ
2こここ95コココ
3いいい90イイイ
4えええ90エエエ
5ううう85ウウウ
6あああ80アアア
7おおお80オオオ
8ききき80キキキ
9かかか70カカカ
10くくく60ククク


という表を作ろうとして、


(Sheet2)
ABCDE
順位検索名称点数備考
19けけけ100ケケケ
210こここ95コココ
32いいい90イイイ
4#N/A#N/A#N/A#N/A
53ううう85ウウウ
61あああ80アアア
7#N/A#N/A#N/A#N/A
8#N/A#N/A#N/A#N/A
96かかか70カカカ
108くくく60ククク

B2=MATCH(A2,Sheet1!$C$2:$C$11,0)
C2=INDEX(Sheet1!$A$2:$A$11,B2)
E2=INDEX(Sheet1!$B$2:$B$11,B2)
E2=INDEX(Sheet1!$D$2:$D$11,B2)


としたのですが、90点が2人、80点が3人の部分が、#N/Aとなってしまいました。
Sheet1に4,7,8位がないのが原因と言うところまではわかったのですが、このような場合どのように処理すればよいのでしょうか。
Sheet2の同じ点数の順位の表示は、6位6位6位ではなくて、6位7位8位のままで編集したいと考えています。
また、同一順位内での表示順序はどうなってもいいと考えています。
エクセル2003です。

よろしくお願いします。

A 回答 (3件)

◆こんな方法もありますよ



◆Sheet1の順位の式
C2=RANK(B2,$B$2:$B$11)+COUNTIF($B$2:B2,B2)-1
★下にコピー

◆Sheet2の「名称」の式
B2=INDEX(Sheet1!A$2:A$11,MATCH($A2,Sheet1!$C$2:$C$11,0))
★右にコピーすると、「点数」の式になります

◆Sheet2の「備考」の式
D2=INDEX(Sheet1!D$2:D$11,MATCH($A2,Sheet1!$C$2:$C$11,0))
★下にコピー
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

現在作成中のものの「Sheet1の順位の式」だけを修正して、完成することができました。

Sheet2の「名称」の式と、Sheet2の「備考」の式を使えば、補助列を使わなくてすむんですね。
今後の参考にします。

ありがとうございました。

お礼日時:2007/01/20 16:55

こんにちは。



私も補助列を設けたほうがよいと思います。

どこでもよいのですが、ここでは、Sheet2 のE列にさせていただきます。

E2:~下にフィル・ドラッグダウン・コピー

=MOD(SMALL(INDEX((Sheet1!$C$2:$C$11+ROW(Sheet1!$C$2:$C$11)/100),,),ROW(Sheet1!C1)),1)*100


A2:
=INDEX(Sheet1!$A$1:$D$11,$E2,3)

B2:
=INDEX(Sheet1!$A$1:$D$11,$E2,1)

C2:
=INDEX(Sheet1!$A$1:$D$11,$E2,2)

D2:
=INDEX(Sheet1!$A$1:$D$11,$E2,4)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

Sheet1に変更を加えずに、さらに同じ順位の表示もそろえることができるんですね。びっくりしました。

今回は、現在作成中のデータの「Sheet1の順位の式」を変更するだけの方が手間も少なく目的を達成できたので、回答2の方法を使わせてもらうことにしました。

将来的には、同じ順位の表示もそろえたいと思っていたので、次回作り直すときに使わせてもらいます。

ありがとうございました。

お礼日時:2007/01/20 17:03

作業列を使ってよいなら、まずSheet1のE2に以下の式を入れて下へコピーします。



=C2+(COUNTIF($C$2:C2,C2)-1)/100

これはC列に同じ順位があったときに、出てきた順番に0.01単位で差をつけて違う順位にする式です。

次にSheet2のF2に以下の式を入れて下へコピーします。

=SMALL(Sheet1!$E$2:$E$11,A2)

最後に、Sheet2のB2の式を以下の式にして下へコピーします。

=MATCH(F2,Sheet1!$E$2:$E$11,0)

Sheet1のE列、Sheet2のF列がじゃまなら、列を右クリックして「表示しない」を選択すると非表示にできます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

今回は、Sheet1の順位の表示は正確でなくても良かったので(すみません書いておりませんでした)、回答2の方の
C2=RANK(B2,$B$2:$B$11)+COUNTIF($B$2:B2,B2)-1
を使わせてもらうことにしました。

Sheet1の順位の表示も正確にする必要ができたときに、使わさせてもらいます。

>C列に同じ順位があったときに、出てきた順番に0.01単位で差をつけて違う順位にする式です。

この部分非常に参考になりました。

ありがとうございました。

お礼日時:2007/01/20 16:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!