• ベストアンサー

エクセルで横方向でのソート、または条件を満たすセルの値を表示する関数ありますか?

A,B,C,D,E列に文字列が入っており、 F列にはA~Eの中で先頭文字が(1)のセルの値を表示 G列にはA~Eの中で先頭文字が(2)のセルの値を表示 H列にはA~Eの中で先頭文字が(3)のセルの値を表示 I列にはA~Eの中で先頭文字が(4)のセルの値を表示 J列にはA~Eの中で先頭文字が(5)のセルの値を表示 させたいのですが、F~J列にはどんな関数を入れれば良いでしょうか? 横行でのソートをするのと同じ意味になると思うのですが、 先頭文字順に拾い出したいのです。 よろしくお願いします。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 各先頭文字列は半角で(n)としています。 F1に=HLOOKUP("("&COLUMN(A1)&")*",$A1:$E1,1,FALSE)を設定、縦横にコピー

ukichon
質問者

お礼

ありがとうございます! ちょっと試しのファイルでやったら思った結果がでました。 きっとこれでうまくいくと思います。 助かりました。

その他の回答 (4)

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

◆こんなことでしょうか F1=IF(COUNTA($A1:$E1)<COLUMN(A1),"",INDEX($A1:$E1,MATCH(COLUMN(A1),INDEX(COUNTIF($A1:$E1,"<="&$A1:$E1),),))) ★右にコピー

ukichon
質問者

お礼

ありがとうございます。 教えて頂いた方法でもちゃんと欲しい結果が出ました。 最初の方と違う式なのに不思議です。 助かりました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>先頭がどんな文字かは関係なく、単純にソートできる関数なのですか? 私の提示した式はセルに入力されている先頭の文字のコード番号を取得して、そのコード番号の小さい順に並べ替えて表示する数式です。 したがって、先頭文字がどのような文字でも、コード順に従って並べ替えることができます。 ただし、先頭文字だけで判定していますので、先頭文字が同じ場合は同じ値を2つ表示してしまいます。 なお、提示した数式は配列数式する必要があります。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 参考になるかどうか判りませんが・・・ 関数ではないので的外れなら読み流してください。 ↓の画像で説明させていただくと A1~E4セルを範囲指定 → コピー → A10セルを選択 → 形式を選択して貼り付け → 「行列を入れ替える」にチェックを入れOK A10~A14セルを範囲指定 → データ → リスト → 「リストの作成」 → OK 同様にB10~B14 → リストの作成 ・・・ というように全ての列でリストを作成します。 これで列毎に並び替え(他の列に影響なし)ができますので 全ての列を昇順で並び替えした後に、A11~D15セルを範囲指定し コピー → F1セルを選択 → 形式を選択して貼り付け → 「値」と「行列を入れ替えて貼り付け」にチェックを入れOK これで画像のような感じになります。 尚、A列~E列のセルにはそれぞれ、(1)~(5)のデータが一つずつ入っているとしての回答になります。 以上、当方使用のExcel2003での回答でしたが 参考になれば幸いです。 尚、的外れなら読み流してくださいね。m(__)m

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

エクセルの標準機能で横方向にも並べ替えをすることができますが、今回のようなケースでは1行ごとに処理する必要があるので、あまり有効でないかもしれません。 バージョンが記載されていませんので、2003のケースで説明すると、たとえば、データがA1セルから入力されているなら、A1セルからE1セルを選択して「データ」「並べ替え」で「現在選択されている範囲を並べ替える」にチェックを入れ、「オプション」ボタンをクリックして方向を「行方向」にしてOKします。 先頭文字の昇順で並べ替えたいなら、以下のような配列数式を入力することになります。 =INDEX($A1:$E1,MAX((SMALL(CODE($A1:$E1),COLUMN(A1))=CODE($A1:$E1))*COLUMN($A1:$E1))) 入力後、Ctrl+Shift+Enterで確定して右方向および下方向にオートフィルします。

ukichon
質問者

お礼

わざわざ細かい説明をありがとうございます。 ただ、この関数に見慣れてなくて理解できず・・・ 最初の回答者様ので解決できたのですが、 この方法も欲しい結果が得られるのかは興味があります。 あと、今から気づいたのですが、私の質問は(1)~(5)と表示されていますが、 実は、○の中に数字がはいった、まるいち、まるに、まるさん・・・ だったんですが、 きっと機種依存文字か何かの理由で自動的に修正されてしまったのでしょうね。。。だから余計ややこしくなってるんだと思います。 先頭がどんな文字かは関係なく、単純にソートできる関数なのですか? 詳しく説明していただけると幸いです。

関連するQ&A