プロが教えるわが家の防犯対策術!

sheet1をデータ入力用のシートとし、以下のデータが入っています。
  A  B  C  D
1 あ 5
2 い 4
3 は 8
4 

sheet2は上記のBのデータを大きい順に並べ替えた出力用のシートとし、
以下のように出力されます。
  A  B  C  D
1 は 8
2 あ 5
3 い 4
4 

sheet1のデータが更新されて大きさの順番が変わると、
sheet2の並び順が自動で変わるように出来るのでしょうか?
マクロを使わずに数式でやりたいと思っています。

A 回答 (5件)

既出回答に似た考えのやり方があるが


「エクセル 関数 並べ替え」(または前の2つとソート)でWEB照会して見ると
http://pc.nikkeibp.co.jp/article/NPC/20060213/22 …
などがある。
解説が実例入りで詳しいので紹介しておく。
ーー
この方法は
(1)作業列を使う。
(2)同じ値があると困る。
などの問題点はあるが。
ーーー
(2)の点は、同じ値にも次の番号を振るやり方を見つければよい。
例データ
A列   B列
値順位
81
44
26
52
45
53
17

B列B2の式は =RANK(A2,$A$2:$A$10)+COUNTIF($A$1:A2,A2)-1
式を縦方向に複写する。
結果上記。
ーー
並べ替えは例えばF2に
=INDEX($A$2:$A$10,MATCH(ROW()-1,$B$2:$B$10,0),1)
と入れて下方向に式を複写。
結果
8
5
5
4
4
2
1
一種の自称 imogasi方式です。imogasi方式の関連はGoogke照会のこと。(銃器では#N/Aの問題、上記例では1列だが複数列のデータを並べ替える場合などの問題が残っているが、長くなるので略。そちらに書いてあるので略)
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/12/14 08:31

こんにちは。



Sheet2!A1
=INDEX(Sheet1!$A$1:$B$3,MOD(INDEX(LARGE(Sheet1!$B$1:$B$3+ROW($A$1:$A$3)/100,ROW($A$1:$A$3)),ROW(A1)),1)*100,1)

Sheet2!B1
=INDEX(Sheet1!$A$1:$B$3,MOD(INDEX(LARGE(Sheet1!$B$1:$B$3+ROW($A$1:$A$3)/100,ROW($A$1:$A$3)),ROW(B1)),1)*100,2)

・重複した場合は、行番号が少ないほうが下になります。
・エラー処理していませんから、オートフィル・コピーして、範囲外になると、#REF! のエラー値を返します。
・*100は、100個までのデータ数です。それを越える場合は、増やさなくてはいけません。
・ROW($A$1:$A$3)は、インクリメントといって、あくまでも、ダミーですから、最初は、必ずA1になります。データ数にあわせないと、エラーが出ます。
・Excelのバージョンによって制限があります。Excel 2002以上は、論理的限界はないのですが、一般的にデータ数は、5,500個程度までです。
・なお、この数式は、ネットでは、「重み付け」という名前で知られている方法のひとつです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/14 08:30

同じ大きさの数字が重複してない事が条件です。



sheet2のB1セルに
=LARGE(Sheet1!B:B,ROW(A1))

sheet2のA1セルに
=INDEX(Sheet1!A:A,MATCH(B1,Sheet1!B:B,0))

これをそれぞれ下方向にフィルコピーです。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/12/14 08:29

作業用の別シートをつくります。


B1に”あ”、C1に”5”があるとします。すなわち、B列にsheet1のA列、C列にsheet1のB列がくるようにして、A1に以下の計算式を入力して、下にコピーします。
=RANK(C1,$C$1:$C$2000,0)

第2引数のCの範囲は、Cのデータ範囲を指定します。これでCの値が大きい順に番号が振られます。

shett2のA列に昇順に1、2、3とデータの個数分、昇順に番号をふります。B列、C列ににVLOKKUP関数を入力し、作業用シートからshett2のA列の数字をキーにしてデータを拾ってゆきます。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/12/14 08:29

数式(関数)は値を返すだけですので、できません。

マクロを使えばできます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/14 08:28

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