• ベストアンサー

複数セルから同じ文字列を抽出、並べ替え

お世話になります。 セル式で定義したいのですが、いい考えが浮かびません。 A列に以下のような文字が並んでいるとします。実際は下に無制限とします。 A1  AAA A2  BBB A3  CCC A4  AAA A5  CCC A6  DDD A7  AAA これらのセル中の文字列から以下のように並べ替えてB列に配置したいのです。 B1  AAA B2  BBB B3  CCC B4  DDD 4種類の文字列となるのでB1:B4まで並べたいと思います。 B列のセルにセル式を記述したいと思います。 以上、ご教授下さい。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

◆「並び替え」のルールが分かりませんが、A列の上からの順でよければ ★少し、長い式になりますが、作業列なしの方法です B1=IF(ROW(A1)>COUNT(INDEX(1/(MATCH($A$1:$A$100,$A$1:$A$100,)=ROW($A$1:$A$100)),)),"",INDEX(A:A,SMALL(INDEX(SUBSTITUTE((MATCH($A$1:$A$100&"",$A$1:$A$100&"",)=ROW($1:$100))*($A$1:$A$100<>""),0,10^5)*ROW($1:$100),0),ROW(A1)))) ★下にコピー

redsocksjp
質問者

お礼

大変参考になりました。うまくいきました。 採用させて頂きます。 また、よろしくお願い致します。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

フィルタでやるのがベストだが、関数に拘るなら データ例 A2:A8で(第1行B1は空白にすること) AAA 1 BBB 2 CCC 3 AAA CCC DDD 4 AAA B列には=IF(COUNTIF($A$2:A2,A2)=1,MAX($B$1:B1)+1,"") を入れてB8まで式複写 結果 上記の通り。 やっていることは、初出に連番を振っている。 C2には=INDEX($A$2:$A$100,MATCH(ROW()-1,$B$2:$B$100,0),1) と入れて4行分式を複写。 結果C2:C5 AAA BBB CCC DDD これを自称imogasi方式といっている。 作業列を使うが、判りやすいと思います。 B列に結果を出したいなら、どこか目立たない列に上記B列式を置くとよい。 WEBでimogasi方式で照会すれば、たくさん同類質問が出ます。 ということはよくある質問です。 また他の方式の回答もそれらの質問の回答にに出ています。

redsocksjp
質問者

お礼

ご指示ありがとうございました。 参考にさせて頂きます。 また、よろしくお願い致します。

回答No.1

4種類ということであれば単純に AAA BBB CCC DDDをコピーして貼り付け。 ツール→オプション→ユーザー定義リスト。ここで定義して データ→データの並び替え→オプション→並び替え順序の指定で指定する。回答になりますか?

redsocksjp
質問者

お礼

今回はセル式にて定義しますので今回の希望とは少し異なりますが、 勉強になりました。 ありがとうございました。

関連するQ&A