- ベストアンサー
EXCELでデータのグループ化をして整理したい
以下のように縦にならんだ数字を 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 のように、小さい順にならびかわってしまいます。。。 よろしくお願いします!
- みんなの回答 (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」と一行ずれていることに注意してください
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
#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列の値に置き換えています。
お礼
またまたお返事いただきありがとうございます! 書き込みいただいてから暇をみつけてはちょっとずつ 数式の見直しをしていました。 おかげさまでだいぶ分かってきました! このたびはまことにありがとうございました♪♪ また機会がありましたらよろしくお願いいたします!
お礼
す・・・すごい!!できました!! 数式をそのままコピペさせてもらって 参照セルだけ変えてみたら見事にできました! ところでずうずうしいお願いなんですが、 式の意味を教えていただいてもよろしいでしょうか?? 関数をひとつひとつ調べてみたんですけど、 どうも意味がわからないのです。。。 「^」とか使ったことないのです。 初心者でゴメンナサイ。 よろしくお願いします!