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

1○○-○○
2aaa
3bbbb
4cc
5○○-○○
6ddd
7eeee


上記のように縦一列に並んでいるデータを、特定文字から折り返して
下記のように横一列に並べるためのマクロを教えて欲しいです。

1○○-○○ aaa bbbb cc
2○○-○○ ddd eeee



○には異なる数字が入っていますが、必ず-は同じ場所に位置するので-をMid関数で引っ掛けて
次の○○-○○までの行を一塊として一行化するとできる気がしていますがマクロがわかりませんので
ご教授頂けると嬉しいです。

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

  • ありがとうございます!
    途中のwhatの後の??とはなんでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/09/29 16:24

A 回答 (4件)

No.3です。



>途中のwhatの後の??とはなんでしょうか?
ワイルドカードと言われるものですね。

"*" については既出の回答にありますが、こちらだと『任意の文字列』になりますので"-"の前後の文字数が幾つあろうがOKとなります。

No.3のコードでの?は『ある1文字』を指しますので"??-*"は"-"の前には2文字・後には任意の文字列(数の指定なし)となります。

また途中の"[0-9][0-9]-[0-9][0-9]"は『2桁の数字+"-"+2桁の数字』を指しています。
    • good
    • 0

No.2です。



初級レベルなジジィなのでこんなにも長くなって申し訳ないです。
他の方なら2/3位に縮められるかと思いますがそこは・・・・・

Sub megu()
Dim A_r As Range, B_r As Range, C_r As Range
Dim rr As Range, str As String

Set rr = Range("A1", Cells(Rows.CountLarge, 1).End(xlUp))
Set A_r = rr.Find(What:="??-*", After:=rr.Cells(rr.Rows.Count), LookAt:=xlWhole)
Set C_r = Range("B1")

If Not A_r Is Nothing Then

str = A_r.Address

Do

Set B_r = rr.Find(What:="??-*", After:=A_r.Offset(1), LookAt:=xlWhole).Offset(-1)

If A_r.Row > B_r.Row Then Set B_r = rr.Cells(rr.Rows.Count)

If A_r.Value Like "[0-9][0-9]-[0-9][0-9]" Then

C_r.Value = Join(Application.Transpose(Range(B_r, A_r).Value), " ")
Set C_r = C_r.Offset(1)

End If

Set A_r = rr.FindNext(A_r)

If str = A_r.Address Then Exit Do

Loop

End If

Set rr = Nothing
Set A_r = Nothing
Set B_r = Nothing
Set C_r = Nothing

End Sub

あまり参考にはならないでしょうけどご勘弁を。
この回答への補足あり
    • good
    • 0

あれ?


回答ついていませんでしたっけ?
期限切れになったのかな?

前回見かけた時は1行目にも他のデータがありましたけど、今回はないと言う事でしょうか?

https://excelwork.info/excel/findwildcard/
Find メソッド ワイルドカード(?)使用例

が参考になるかもですが、もし以前質問をされた方でなければごめんなさい。
質問者さんの名前は特に気にせず回答してますので。
⇒あの時は日付で頭は4桁の数字だから違う方かな?
    • good
    • 0

こんにちは。



取り合えず、できるところまでご自分で作られて、分からないところを
 質問されると良いかと思います。(全て作っては、敬遠されます。
 私もお断りしています。 ここを教えてなら回答して貰えるかと。)

>Mid関数
 → Like演算子が便利だと思います。 例えばですが、


If Cells(○,○).Value Like "*-*" Then
’-が入っている時の処理
  
End If

https://dailyrecords.blog/archives/9080#1__22
    • good
    • 0

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