アプリ版:「スタンプのみでお礼する」機能のリリースについて

Webで調べる等したのですが、どうしても方法がわからなかったので、ご存知の方がおりましたら、ご教示いただけないでしょうか。

■やりたいこと
セル内で改行されている文字列を昇順等に並び替えをしたいと考えています。
例として、以下のような文字列が記入されたセルがあります。
以下の文字列は、すべて1つのセルに記入されており、セル内で改行されています。
------
Boston
Company
Asia
------
このセルの中の行を昇順等に並び替え、以下の様な結果にしたいと考えています。
------
Asia
Boston
Company
------

関数やエクセルの機能も調べておりますが、どうしても方法が見つからず、お力添えいただけますと幸甚です。

よろしくお願いいたします。

質問者からの補足コメント

A 回答 (2件)

No.1です。



どうも失礼しました。
自己解決されたようでしたね。
前回の投稿は無視してください。m(_ _)m
    • good
    • 1

こんにちは!



セル内での並び替えは一般機能では難しいと思います。
VBAになりますが一例です。
データはA1セル以降にあるとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から//
Dim i As Long, j As Long, k As Long
Dim myStr As String, myAry As Variant
Application.ScreenUpdating = False
Range("B:B").Insert
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If InStr(Cells(i, "A"), vbLf) > 0 Then
myAry = Split(Cells(i, "A"), vbLf)
For k = 0 To UBound(myAry)
Cells(k + 1, "B") = myAry(k)
Next k
Range("B:B").Sort key1:=Range("B1"), order1:=xlAscending, Header:=xlNo
For j = 1 To Cells(Rows.Count, "B").End(xlUp).Row
myStr = myStr & Cells(j, "B") & vbCrLf
Next j
Cells(i, "A") = Left(myStr, Len(myStr) - 1)
Range("B:B").ClearContents
myStr = ""
End If
Next i
Range("B:B").Delete
Application.ScreenUpdating = True
MsgBox "完了"
End Sub 'この行まで//

※ 一旦マクロを実行すると元に戻せませんので
別Sheetでマクロを試してみてください。m(_ _)m
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています