• 締切済み

文字列の順番を指定して条件づける関数 エクセル

添付ファイルを参照いただきたいのですが、 アルファベットのS,M,J,Nで構成される3つの文字列があります。 (別シートにあるデータからif関数で条件に合致したものにそれぞれの3つの文字列が入っています。) 現状として1つの行に2つ以上文字列があったら★をつけているのですが、ここから、かつ、文字列の順番がバラバラのもののみ抽出したいです。 例えば、黄色ハイライトが該当します。1つ目の文字列がSとM,2つ目がMとJ、3つめがJとSなので、3つとも順番が違うので該当。 例えば、緑が該当しません。1つ目と3つめがMとSで同じ。 関数で抽出するにはどうすればいいでしょうか?

みんなの回答

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.2

3文字なんだから「文字列の順番がバラバラ」なのは「ABC」に対して なら「BCA」か「CAB」のどっちかしかありません。 > 関数で抽出するにはどうすればいいでしょうか? 手段を「関数」に限定する意味があるとは思えません。 =LET(_rng,F1:P1,_flt,FILTER(_rng,_rng<>""),_cnt,COLUMNS(_flt),_ptnA,MID(_flt,2,1)&MID(_flt,3,1)&MID(_flt,1,1),_ptnB,MID(_flt,3,1)&MID(_flt,1,1)&MID(_flt,2,1),IFERROR(IF(OR(_flt=TRANSPOSE(_ptnA),_flt=TRANSPOSE(_ptnB)),"★",""),""))

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

別説明を希望する。 こんなことは、よくある(考える)ケースではなく、珍奇な質問例だと思う。だから言っていることが、よく判らない。 もう少しデータ例を増やし、実情データでは、文字出現の順序的に、また文字種的に、こうだから、そのこの点(連続や出現など)に注目して、こう判断する、という書き方はできないか。 ーーー 質問者のいう、文字と文字列の意味は、1セル内での値で、文字=1文字、文字列=2文字以上と、取ってよいか? >3つの文字列はーー>S,M,J,Nのどれか(重複は許す)3文字の文字列? あるいは3セルの文字列のことか? あるいは1セルの3文字の文字列なのか? >2つ以上文字列があったら★をつけているーー>同行で2セル以上にデータがあれば、のことか? >2つ以上文字列があったらーー>同行で、2セル以上にデータがあれば、のこと? それは、もう既に、できているのではないのか?であれば、質問に書かない方がよいだろう。ここまでの、処理の流れは必ずしも質問に書く必要はない場合が多い。 ややこしく感じるだけ。 >文字列の順番がバラバラのもののみ抽出したいです。 === 全般にやりたいことは、関数では複雑になりすぎて難しいのでは。 VBAを使ってやる方が、何かをやろうとしたとき、変数が使えるので、ロジックを表現しやすいが、出現順序をどう表現するのか、は(小生の非力もあろうが)難しいように思う。 ・使われている文字種の抽出(重複在り、重複許さずの別で) ・文字の順番をあるルールで、そろえる必要があれば揃える方法。 ・出現文字の文字列の中での順序の表現 こういうのが、もし必要であれば、(VBAでも関数ならなおさら)一筋縄ではいかないように思う。 3文字であれば、順列的な組み合わせもまあ膨大な数にはならないだろうが。

関連するQ&A

専門家に質問してみよう