• ベストアンサー

ある1列を昇順に並べたときの順番を求めたいエクセル2003

以下のようにA列に不規則な文字列が入力されているとして,A列を昇順に並べ替えた場合の順序をB列に表示したいのですが,関数で求めることはできないでしょうか? 重複しているものと空白は無視して順位から省いた処理をしたいと思っています。 マクロ,配列数式,フィルタオプションを使用しない方法でお願いします。 作業列を使わない方法が好ましく思いますが,作業列が1列で済むようであればその方法でも教えて頂けると助かります。 無理な質問をしている気もするのですが,そう思いながら質問した場合でもいい回答をよく頂けているので,この度も質問させて頂きました。    A列        B列 ───────────────────────────    あああああ       4   いいいいい       6   さしすせそ       7   702029-A        1    あいうえお       5   さしすせそ          LLLL          3   まみむめも       8   898-5        2

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 横からお邪魔します。 No.1さんの方法を拝借させていただきまして・・・ 1行目は見出し行(タイトル行)があるとして、 とりあえず2行目~100行目まで対応できる数式にしてみました。 B2セルに =IF(OR(A2="",COUNTIF($A$2:A2,A2)<>1),"",SUMPRODUCT(($A$2:$A$100<A2)*($A$2:$A$100<>""))+1) としてオートフィルでコピーではどうでしょうか? 参考になれば幸いです。m(__)m

rousanox
質問者

補足

回答ありがとうございます。 tom04さんとmshr1962さん,お二人の回答で,今作成している表の条件としては使用できるものとなりました。 ただ,重複についてはカウントの対象となり,数値が抜けてしまいます。 作成中の表においては頂いた回答の数式で問題なく使用できるのですが,重複をカウントしない数式も出来るようでしたら教えて頂けるとありがたいです。 自分でも数式を変えて試みてはいますが,未だ思うものが出来上がりません。 よろしくお願いします。

その他の回答 (4)

回答No.5

C列に以下の関数を  C2セルに=if(a2<>"",if(countif(a$2:a2)=1,1,"")  C列の3行目以降は同じ式をコピーする。 B列に以下の関数を  B2セルに=if(a2<>"",countif(c$2:c2,1),"")  B列の3行目以降は同じ式をコピーする。  

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.2・3です! またまた・・・的外れでごめんなさいね! もう一度やってみました。 今回は一気にというわけではなくて、作業用の列を使ってみました。 ↓の画像でA~C列を作業用の列としています。 元データのA列がE列に移動しています。 まず、A2セルに =IF(OR(E2="",COUNTIF($E$2:E2,E2)<>1),"",ROW(A1)) B2セルに =IF(COUNT($A$2:$A$100)<ROW(E1),"",INDEX($E$2:$E$100,SMALL($A$2:$A$100,ROW(E1)))) C2セルに =IF(B2="","",SUMPRODUCT(($B$2:$B$100<B2)*($B$2:$B$100<>""))+1) として、A2~C2セルを範囲指定し、C2セルのフィルハンドルで下へずぃ~~~!っとコピーします。 結局、元データの重複を削除して表示させているだけです。 このC列ですでに結果は出ていると思いますが、敢えてF列に結果を表示させています。 F2セルの数式を =IF(OR(E2="",COUNTIF($E$2:E2,E2)<>1),"",VLOOKUP(E2,$B$2:$C$100,2,0)) としてオートフィルで下へコピーします。 こんな感じで良かったのですかね? 以上、お役に立てば良いのですが 今回も的外れならごめんなさいね。m(__)m

rousanox
質問者

補足

何度も回答ありがとうございます。 作業列が多く必要になるようですので,先ほどの回答を適用させて頂きお陰さまで問題解決いたしました。 色々とご教示くださりありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! 何度もごめんなさい。 前回の方法では確かに同ランクの場合はCカウントしていませんでしたね! 今回も2行目からの数式になりますが、 B2セルに =IF(OR(A2="",COUNTIF($A$2:A2,A2)<>1),"",COUNTIF($A$2:$A$100,"<"&A2)+COUNTIF($A$2:A2,A2)) としてオートフィルでコピーではどうでしょうか? 今回は重複している場合は空白にしていますが、カウントはされていると思います。 以上、お役に立てばよいのですが 今回も的外れならごめんなさいね。m(__)m

rousanox
質問者

補足

何度も回答ありがとうございます。 申し訳ないのですが余り状況は変わっていませんでした。 tom04さんの回答を見ているとなんだか出来そうな気はするのですが未だ思いつかないので解決できたら再度投稿お願いしますm(__)m 頂いた数式ですと以下のような結果となりました。 あああああ    4 いいいいい    6 さしすせそ    11 702029-A     1 あいうえお    5 さしすせそ    12 LLLL       3 まみむめも    13 898-5      2 いいいいい いいいいい いいいいい いいいいい

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

上記の文字列がA1:A8にある場合 B1=SUMPRODUCT(($A$1:$A$8<A1)*1)+1 でB8までコピー

rousanox
質問者

補足

早速の回答ありがとうございます。 質問に書いていましたが,空白と重複文字は無視して数えたいのですが,数えられてしまうのでこれを数えないようにすることはできないでしょうか。

関連するQ&A

専門家に質問してみよう