色の知識で人生の可能性が広がる!みんなに役立つ色彩検定 >>

A列に、
500
80
200
200
100
300
と、データがあります。このデータのうち、重複しているデータ(200)を一つだけ表示させ、かつ、小さい順に並べ替えて、下記のようにしたいのですが…。
80
100
200
300
500

調べてみて重複データをチェックする方法や削除する方法などはありましたが、並べ替える方法が見つかりません。フィルタオプションかと思いましたが使い方がよくわかりません。配列数式のこともわかりません。オートフィルタやマクロは使いたくありません。よろしくお願いします。

教えて!goo グレード

A 回答 (8件)

C列1行目から表示させるとします。



C1セルに
=IF(COUNT(A:A),MIN(A:A),"")

C2セルに
=IF(OR(C1="",C1=MAX(A:A)),"",SMALL(A:A,COUNTIF(A:A,"<="&C1)+1))

と入れて、必要なだけ下にフィルコピーします。
    • good
    • 2
この回答へのお礼

素晴らし~い!!できました。しかも、すっきりしていてとてもいいですね。どうもありがとうございました。

お礼日時:2006/05/16 09:58

自称imogasi方式の、変型判で解ける。


例データ
下記A列
A列 B列   C列    D列  E列 
5005001500
80805300
2002003200
200100
100100480
3003002#N/A
B1に
=IF(COUNTIF($A$1:A1,A1)=1,A1,"")
を入れて下方向に式を複写。
C列C1に
=IF(B1="","",RANK(B1,$B$1:$B$100))
を入れて下方向に式を複写。
E列E1に
=INDEX($A$1:$A$100,MATCH(ROW(),$C$1:$C$100,0)*1)
を入れて下方向に式を複写。
(1)B列では重複データがないので、安心してRANK関数が使える。同順位がない。
(2)$100などは最多見込み行数に変えてください。
B、C列は使わない目立たないところを使ってください。
D列を使っていないのは意味はありません。
(3)該当行を超えるとエラーがでるが、防止策は省略>
    • good
    • 1
この回答へのお礼

回答どうもありがとうございます。実は、ほかの質問を見ていて、imogasiさん方式の回答を期待してました(^O^)。
試してみましたが、E列が一部#N/Aのエラーになってしまいました。やっぱり私のやり方が悪いのでしょうか。ともあれ皆様の回答のおかげで解決いたしました。お世話になりましてどうもありがとうございました。また何かありましたらよろしくお願いします。

お礼日時:2006/05/16 10:15

  A   B   C


1 list list list
2  500  80  80
3  80  100  100
4  200  200  200
5  200  200  300
6  100  300  500
7  300  500

1.セル B2 に式 =SMALL(A$2:A$7,ROW(1:1)) を入力して、此れを下方
  にズズーッとA列のデータの下端と同じ行まで複写
2.[データ]→[フィルタ]→[フィルタオプションの設定]を実行
3.“指定した範囲”に目玉入れ
  [リスト範囲]  B1:B7
  [検索条件範囲] (空白のままにしておく)
  [抽出範囲]   C1
  “重複するレコードは無視する”にチェック入れ
4.[OK]をクリック
    • good
    • 1
この回答へのお礼

回答どうもありがとうございます。
フィルタオプションて、こういう風に使うんですね。
ご丁寧に教えていただいたおかげで一応できました!
ただ、[抽出範囲]が希望するセルにはできませんでした(>_<)
でも、また別のところで応用して使いたいと思います。どうもありがとうございました。

お礼日時:2006/05/16 10:10

#4です。

新しい回答が出ているようですが、とりあえず補足を.......。

まず、B2に入れる数式内の $A$2:$A$20 は、A:A に書き換えてください。

> B列は4番目に小さい数値が表示されます。
もしかしたら、数式を入れる先頭セルは 5行目なのではないですか?
その場合 B5 に入れる数式は =SMALL(A:A,ROW()-4) です。
ROW() は、数式を入力したセルの行何号が返します。
ですから、5行目に"1"番小さい数値を出す場合は、ROW()-4 なのです。

> D列は#Num!とエラー表示になります。
D列に入れる式内のデータ範囲は、C:C の形にはしないでください。
また ROW()-1 の部分も、実際のセル位置に合わせて変えてください。

> [Ctrl]と[Shift]を押しながら[Enter]しますと、数式に{ }が表示される
そうなります。
{ }は、配列関数であることを示しています。
    • good
    • 0
この回答へのお礼

度々の回答、どうもありがとうございます。
> 数式を入れる先頭セルは 5行目なのではないですか?
その通りです!ROW()-4 にしたらできました!
配列関数などもご丁寧に教えてくださり、本当にどうもありがとうございました!

お礼日時:2006/05/16 10:06

#2です。


私の勘違いでした。
次の数式に変更してください。
 B2: =SMALL($A$2:$A$20,ROW()-1)
 C2: =IF(B2=B1,"",B2)
 D2: =INDIRECT(ADDRESS(SMALL(IF($C$2:$C$20="","",ROW($C$2:$C$20)),ROW()-1),3))
    D2だけは、数式入力後に [Ctrl]と[Shift]を押しながら[Enter]してください。(配列数式です)
その後、B2:D2 を選択して、20行目までドラッグコピーします。
    • good
    • 0
この回答へのお礼

重ねての回答どうもありがとうございます。残念ながらできませんでした。
まず、B列は4番目に小さい数値が表示されます。
また、D列は#Num!とエラー表示になります。
私のやり方が悪いのでしょうか?
それから、[Ctrl]と[Shift]を押しながら[Enter]しますと、数式に{}が表示されるのですが、いいのでしょうか?
せっかく教えていただいたのに済みません。

お礼日時:2006/05/15 16:54

削除したデータ200は、表示だけさせないのですか?


それとも実際に削除するのですか?
ここでは、削除する方法をやってみましょう。
データ列Aに付きソートをして昇順にします。
上記データの右横B列に以下の関数を入力します。このとき
データ2行目(B3)から入力すれば良いです。

A1に表題、A2にデータ一番目、データはA○○行目まで。
B1は表題、B2は空白のまま、B3に下記関数。
 =exact(a2,a3)
つまり、自己と一つ上の数字を同一かどうか比べる。
A○○行目まで、関数をドラッグして入れます。
すると各データにつき、自分より一つ上のデータと同一ならTRUE、
違うときは、FALSEが表示されます。
A1からB○○まで範囲を選択し、オートフィルターを選択します。
B列に付き、FALSEのデータを選択すると、重複していないものを
見ることが出来ます。
重複データを削除したいのなら、TRUEを選択してそのデータを
削除します。B列につき、FALSEのデータだけとなります。
    • good
    • 0
この回答へのお礼

回答どうもありがとうございます。
ソートは使いたくなかったのです。。。
そして、実際に削除すると、表が崩れてしまうので、表示だけさせたくないのです。
でも、exact関数は使えそうですね。ありがとうございました。

お礼日時:2006/05/15 16:30

> オートフィルタ、マクロ、配列関数を使わない.



作業列を使うことは、どうなのでしょうか。

1行目は項目行にして(または空白)、A2:A20 にデータが並んでいるとして、
次のように入力します。
B,C列が作業用です。
 B2: =SMALL($A$2:$A$20,ROW()-1)
 C2: =IF(B2=B1,0,COUNTIF($B$2:$B$20,B2)-1)
 D2: =OFFSET(B2,SUM($C$2:C3),0)
その後、B2:D2 を選択して、20行目までドラッグコピーします。
    • good
    • 0
この回答へのお礼

回答どうもありがとうございます!
ご提示の方法を試してみましたができませんでした(>_<)
ROW()-1 にはどんな意味があるんですか?
それから、配列関数は使わないということではなく、何のことかわからないだけなんです。
でも、教えていただいた、「IF(B2=B1…」 の辺りにヒントがありそうな気がします。もうちょっと頑張ってみます。どうもありがとうございました。

お礼日時:2006/05/15 16:19

個人的には、並べ替えが一番楽じゃないかと思いましたが(汗


関数も何もなく、メニューに出てますよ?

メニューバーの
データ→並べ替え。
でどうでしょうか?

>>オートフィルタやマクロは使いたくありません。
ちょっと無理じゃないでしょうか。
重複データをチェックする方法や削除する方法、並べ替える方法が見つかったら。。。それを応用するしかないかと思いますが。。。

ザッと探した感じでは、「重複を削除して並べ替える」という機能を持った関数はなさそうでしたので。

使用頻度が高く、システムとして使用するのでしたら、マクロで作成してもいいでしょうし、ただ単に、このようなことがしたい~。という感じで投稿されているのでしたら、マクロ登録などする必要もないので、重複削除→データ並べ替え。の作業を行いましょう。
    • good
    • 0
この回答へのお礼

回答どうもありがとうございます。
実は、A列の数字は、別表から抽出しているものです。それで、その数字をsmall関数を使って、並べ替えるところまではできているのです。ただ重複したデータがあり、それらが表示されると非常に見づらく、次の操作が間違いやすくなってしまうため、安全のためにその重複データは一つだけ表示させたいのです。
何だか分かりづらくてすみません。よろしくお願いします。

お礼日時:2006/05/15 15:18

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング