[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日付が早い順から重複ありの連番をふる方法』(Rose)
発注書を作っています。 過去ログでみつけられなかったので教えてください。 最大6品目の複数商品があり、1ヶ月ごとに発注をします。 発送日は毎週1回と決まっており、最大4週分を一度に発注します。 (5週間ある場合は最終週は数えないので最大でも4週です。)
たとえばC2からC5まで発送の順番を入れていきたいのですが、 単純にRANK関数を入れるとこのように表示されます。
A B C 1 品番 発送日 発送順 2 0002 10/7 1 3 0003 10/7 1 4 0003 10/28 5 5 0004 10/14 3 6 0004 10/28 5 7 0005 10/14 3
これを下記のように表示するにはどうしたらいいでしょうか。 発送は月に1回しかない場合もあれば、毎週(4回)ある場合もあり、 MAX/MIN/LARGEなどを使ってもいまいちうまくいきませんでした。
A B C 1 品番 発送日 発送順 2 0002 10/7 1 3 0003 10/7 1 4 0003 10/28 3 5 0004 10/14 2 6 0004 10/28 3 7 0005 10/14 2
関数でよろしくお願いします。XP、EXCEL2003です。
C2セルに =SUMPRODUCT(((COUNTIF(OFFSET(B$2,,,ROW($1:$6)),B$2:B$7)>1)*10^7+B$2:B$7<B2)*1)+1 と入力して下へコピー、でどうでしょうか?
なお、範囲を変更する場合、「ROW($1:$6)」の部分は1から計算範囲の行数としてください。 (上の式の場合、2行めから7行めの6行なので「ROW($1:$6)」としている)
例:発送日がB5セルからB20セルの場合、5行目から20行目までの16行なので =SUMPRODUCT(((COUNTIF(OFFSET(B$5,,,ROW($1:$16)),B$5:B$20)>1)*10^7+B$5:B$20<B5)*1)+1 とする。 (独覚)
発送日を昇順に並べ替えれば簡単だと思いますが(表も見やすくなるし) 並べ替えは不可なのでしょうか?
並べ替え不可、作業列の使用は可なら
A B C D 1 品番 発送日 発送順 2 0002 10/7 1 10/7 3 0003 10/7 1 4 0003 10/28 3 10/28 5 0004 10/14 2 10/14 6 0004 10/28 3 7 0005 10/14 2
D2 =IF(COUNTIF($B$2:B2,B2)=1,B2,"") C2 =IF(B2="","",RANK(B2,$D$2:$D$10,1))
下にフィルコピー
(R)
独覚さま
サンプルの表ではうまくいきました! ありがとうございます。
ただ、実際の表では、不規則に行間があいています。 実際の表に当てはめてみたところ、1となってほしいところに 15と表示されました。空欄の部分を1としてしまうためのようです。 空欄の場合はIFで""を返すようにしてみても同じでした。
↑↑↑ ここまで書いていたところで、Rさまの回答をいただきました。
Rさま
空欄の場合を先読みしていただいてありがとうございます。 作業列を使う方法でうまくいきました! ありがとうございました。
ちなみに今回の質問は、もともとの(他の人の)フォーマットがあって、 そこに自動で表示できないか、という依頼を受けてのことでした。 外国に送る発注書なので、フォーマットを変えたりはあまりしたくないそうです。 さらに実際は、「1st、2nd、3rd、4th」と記載したい、とのことだったのですが、 そこはがんばって自分でやってみます。
みなさまありがとうございました。 なお、最初の質問の範囲が間違っていました、すみません。C5→C7(Rose)
途中に空欄がある場合はこのように。
=IF(B2="","",SUMPRODUCT((((COUNTIF(OFFSET(B$2,,,ROW($1:$6)),B$2:B$7)>1)+(B$2:B$7=""))*10^7+B$2:B$7<B2)*1)+1)
さらに、「1st、2nd、3rd、4th」は =IF(B2="","",CHOOSE(SUMPRODUCT((((COUNTIF(OFFSET(B$2,,,ROW($1:$6)),B$2:B$7)>1)+(B$2:B$7=""))*10^7+B$2:B$7<B2)*1)+1,"1st","2nd","3rd","4th")) で。
Rさんの式であれば C2 =IF(B2="","",CHOOSE(RANK(B2,$D$2:$D$10,1),"1st","2nd","3rd","4th")) で。 (独覚)
独覚さま
つぶやきにまでご回答いただき恐縮です…。 お恥ずかしながら、IFとかVLOOKUPの力技でやろうと思ってました。 CHOOSE関数ってこんなふうに使うんですね〜! RANKと相性がよさそうですね。今後も応用したいと思います☆
(Rose)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.