プロが教える店舗&オフィスのセキュリティ対策術

以下のように縦にならんだ数字を

1
14
14
35
35
35
35
14
14
14
2
2
2
2
1

グループ化して「順番をかえずに」以下のように並べたいです。

1
14
35
14
2
1

このようにできる関数かなにかありますか?

ピボットテーブルやオートフィルタを試してみたのですが、
1,2,14,35
のように、小さい順にならびかわってしまいます。。。

よろしくお願いします!

A 回答 (2件)

>このようにできる関数かなにかありますか?


関数ですから、別のセルに抽出、表示してもよいですね。

元のデータが100行目まであるとして
 =INDEX(A:A,SMALL(INDEX(SUBSTITUTE(NOT(EXACT($A$1:$A$100,$A$2:$A$101))*1,0,10^5)*ROW($A$1:$A$100),),ROW(Z1)))
を同じシートの適当なセルに貼り付けて下方向にコピーしてください

ただしこの式は表示するデータがないと#REF!エラーになります。
エラー表示しないようにするには以下のようにIF文を追加します
 =IF(ROW(Z1)<=SUMPRODUCT(NOT(EXACT($A$1:$A$100,$A$2:$A$101))*1),INDEX(A:A,SMALL(INDEX(SUBSTITUTE(NOT(EXACT($A$1:$A$100,$A$2:$A$101))*1,0,10^5)*ROW($A$1:$A$100),),ROW(Z1))),"")

範囲を修正するときは「EXACT($A$1:$A$100,$A$2:$A$101)」の部分(2カ所あります)でセル範囲が「$A$1:$A$100」,「$A$2:$A$101」と一行ずれていることに注意してください
    • good
    • 1
この回答へのお礼

す・・・すごい!!できました!!
数式をそのままコピペさせてもらって
参照セルだけ変えてみたら見事にできました!
ところでずうずうしいお願いなんですが、
式の意味を教えていただいてもよろしいでしょうか??
関数をひとつひとつ調べてみたんですけど、
どうも意味がわからないのです。。。
「^」とか使ったことないのです。
初心者でゴメンナサイ。
よろしくお願いします!

お礼日時:2008/02/21 16:52

#01です


元のシートの空いている列の1行目に
 =SUBSTITUTE(NOT(EXACT(A1,A2))*1,0,10^5)*ROW(A1)
を入力して下方向にコピーしてください

すると抽出するべき行には「その行の行番号」が表示され、その他の行には行番号×100000が表示されるはずです(10^5=100000)

これをINDEX関数で配列にして、
「INDEX(SUBSTITUTE(NOT(EXACT($A$1:$A$100,$A$2:$A$101))*1,0,10^5)*ROW($A$1:$A$100),)」

SMALL関数で小さい方から1つずつ取り出し、
「これにはROW(A1)=1を使います。下にコピーすればROW(A2)=2、ROW(A3)=3と数値が変わります」

それを最初のINDEX関数でA列の値に置き換えています。
    • good
    • 0
この回答へのお礼

またまたお返事いただきありがとうございます!
書き込みいただいてから暇をみつけてはちょっとずつ
数式の見直しをしていました。
おかげさまでだいぶ分かってきました!
このたびはまことにありがとうございました♪♪
また機会がありましたらよろしくお願いいたします!

お礼日時:2008/03/03 14:58

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