【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

A1セルに
Ag[123] = 122.9249; Ag[124] = 123.92864; Ag[125] = 124.93043;
のデータが入っています。
これを、;の部分で、A1,A2,A3に
Ag[123] = 122.9249;
Ag[124] = 123.92864;
Ag[125] = 124.93043;
のように改行させたいです。
どのようなマクロになるでしょうか?

実際のデータは、A1からA540まで入っています。

A 回答 (3件)

A1セルで、A1セル自体を上書きするマクロは可能ではあっても、それは出来かねます。


展開したリストは、別のシートのA1から入れました。
それとも、セル内に改行コードを入れるというのも考えますが、使い辛くないかと思いました。

'//
Sub SplitOut()
 Dim i As Long, j As Long
 Dim k As Long, m As Long
 Dim x As Variant, xi As Variant
 Dim arx As Variant, ar As Variant

 Dim sh1 As Worksheet
 Set sh1 = Worksheets("Sheet1") 'データのあるシート
 Dim sh2 As Worksheet
 Set sh2 = Worksheets("Sheet2") '別のシート

 k = 1
 With sh1
 x = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Value
 End With
 x = Application.Transpose(x)
 For i = 1 To UBound(x)
  xi = Replace(x(i), Space(1), "", , , vbTextCompare)
  xi = Replace(xi, "=", " = ", , , vbTextCompare)
  arx = Split(xi, ";")
  ar = Application.Index(arx, 1, 0)
  j = UBound(ar) - 1
  m = 1
  For Each c In sh2.Cells(k, 1).Resize(j)
   c.Value = ar(m) & ";"
   m = m + 1
  Next
  k = k + j
 Next i
End Sub
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
完璧に出来ました。

お礼日時:2017/10/08 14:15

Sub Macro1()


Dim MyArry As Variant
Dim i As Long
MyArry = Split(Range("A1").Value, ";")
For i = 0 To UBound(MyArry) - 1
Cells(i + 1, 1).Value = LTrim(RTrim(MyArry(i))) & ";"
Next i
End Sub

> 実際のデータは、A1からA540まで入っています。
処理と矛盾があるように思いますので 後はご自分で補正して下さい。
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
すいません。補正できませんでした。

お礼日時:2017/10/08 14:16

セミコロンの後に空白は必ず入ってるんでしょうか?


「; 」を「;<改行>」に置換とか。

1) マクロの記録を開始。
2) A1を選択。
3) リボン「ホーム」、検索と置換、置換。
4) 「検索と置換」ダイアログで、「; 」を「; 」に「全て置換」。
5) マクロの記録を終了。
6) Alt+F11でVBE起動。
7) VBAの処理を下記のように変更。

 処理範囲
  Range("A1").Select
 →Range("A1:A540").Select
 置換内容
  ~.Replace What:="; ", Replacement:="; ", ~
 →~.Replace What:="; ", Replacement:=";" & vbCrLf, ~

とか。
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
難しいですね。

お礼日時:2017/10/08 14:16

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


おすすめ情報