ここから質問投稿すると、最大4000ポイント当たる!!!! >>

エクセルの関数についての質問です。日付別にランクを付けたい。ただし1位が3つ続いた場合の4つ目は2位としたい。
マクロでも結構です。教えてください。

A列_B列
6/1_1 → 1
6/1_1 → 1
6/1_5 → 2
6/1_5 → 2
6/1_3 → 3
6/2_3 → 1
6/2_3 → 1
6/2_8 → 2
6/2_9 → 3
6/2_9 → 3
_____↑ここの数字を出したいです。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

うーん、単にこういう事かな?


D2以降に日別順位を入れるとして、D2には1、
D3には↓を入れて下にコピー
=IF(A2=A3,IF(B3=B2,D2,D2+1),1)

B列の値が昇順になっている物とします。
「エクセルの関数についての質問です。日付別」の回答画像5
    • good
    • 0
この回答へのお礼

mt2008様

ご回答ありがとうございます。
まさに「単に」ということだったと思われます^^
次回からは、質問方法に注意したいと思います。
有難うございました。

お礼日時:2010/06/19 00:03

同じ日付で同じランクが4つ以上続いた場合にはランクを一つプラスするのでしたら次のようにします。


A列およびB列のデータは2行目から下方に有るとします。
C2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(B2="","",IF(ROW(A1)=1,1,IF(AND(A1=A2,B1=B2),IF(SUMPRODUCT((A$1:A1=A2)*(B$1:B1=B2))<3,C1,IF(OR(SUMPRODUCT((A$1:A1=A2)*(B$1:B1=B2))=3,SUMPRODUCT((A$1:A1=A2)*(B$1:B1=B2))=6),C1+1,C1)),IF(AND(A1=A2,B1<>B2),C1+1,IF(A1<>A2,1,"")))))

勿論、初めにA列が最優先でB列が次の優先で昇順で並べ替えが行われているものとします。
    • good
    • 0
この回答へのお礼

KURUMITO様

返事が遅くなり申し訳ありません。
A列最優先でB列が次の優先の昇順並び替えという条件でした。試してみたところ、もちろんOKでした。
これだけの複数条件がはいっている数式に、ただただ関心させられました。
当方の説明不足があり、他の方同様ご迷惑(いろいろ考えて頂いた)をお掛けしました。
ありがとうございました。

お礼日時:2010/06/18 23:55

#2です。

当方の回答は憶測が違ったようです。
そこで、明確にしておきたい部分があります。

1.日付は昇順である
2.1位が3つ続くとは、3連続で出現した場合か、それとも3つの1位がある場合か?
3.順位を下げる特殊条件はのは1位だけでのみか?2位以降も順位を下げるのか?
4.特殊条件で順位を下げた場合(仮に1位だったとして)、2位だったものは3位になるのか?
5.上記疑問を解決できるようなサンプルが欲しい
    • good
    • 0
この回答へのお礼

CoalTar様
返事が遅く、さらに当方の説明不足があり申し訳ございません。

1.日付は昇順です。
2.3連続です。
3.2位以降もです。
4.3位になりません。

サンプルについては適当なものは用意できそうにございませんでした。

A列_B列
6/1_1 → 1
6/1_1 → 1
6/1_5 → 2
6/1_5 → 2
6/1_6 → 3
6/1_9 → 4
6/1_9 → 4
6/2_3 → 1
6/2_3 → 1
6/2_8 → 2
6/2_9 → 3
6/2_9 → 3

今後は十分に説明できるよう気をつけます。

お礼日時:2010/06/18 23:31

たたき台


B2セル 1
B3セル =IF(A2<>A3,1,IF(B2=B1,B2+1,B2))
下へオートフィル
添付図参照
「エクセルの関数についての質問です。日付別」の回答画像2
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
早速やってみます。

お礼日時:2010/06/17 23:40

上記がA1:B10にあるとして


C1=ROUND(SUMPRODUCT(($A$1:$A$10=A1)*($B$1:$B$10<B1)/COUNTIF($B$1:$B$10,$B$1:$B$10))+1.3,0)
でC10までコピー

※6/1_5→2は3、6/1_3→3は2の間違いですよね。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
6/1_5→2はそのままで6/1_3→3の部分は6/1_6→3の謝りでした。大変申し訳ありませんでした。

お礼日時:2010/06/17 23:19

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel MATCH関数で検索範囲内に同じ値の検索値が複数ある場合

MATCH関数で、検索した値が複数ある場合に1つしか出なくて困っています。
(例)
   A B C D
1 年月日 種類 番号 備考
2 4月1日 肉類 1
3 4月2日 野菜 2
4 4月3日 肉類 1
5 4月4日 果物 2
6 4月5日 野菜 1
7 4月6日 果物 3
8 4月7日 果物 2
9 4月8日 肉類 1

この表で、D9の備考の欄に「種類:肉類、番号:1」と同じものがあった時の日付を、新しい日付で取り出したいのです。

INDEX(A2:A8,(MATCH(B9,B2:B8,0)+MATCH(C9,C2:C8,0))/2)
としたのですが、本当は4月3日を取り出したいのですが、4月1日が出てきます。
どのようにしたら良いでしょうか?
Excel2003です。
よろしくお願いします。

Aベストアンサー

MATCH関数を使用しませんが、D9の書式を日付にして、
=MAX((A2:A8)*(C2:C8=1)*(B2:B8="肉類"))
と、入力してShift+Ctrl+Enterキーで入力完了してみてください(配列式になります)。


人気Q&Aランキング