
エクセルで、同じセル内で文字列が並んでおり、セル内にカンマまたはセル内改行があった場合に、新しいセルに改行させるというマクロを作りたいです。
具体的にいうと、
セルB1に「あい、うえ、」、
B2に「お、
かき、く
け 」
とあった場合、これをマクロにかけると、
B1に「あい」、B2に「うえ」、B3に「お」、B4に「かき」、B5に「く」、B6に「け」となる感じです。
マクロを組んでもセル内での改行しかできず、文字列を別のセルに改行させることがどうしてもできません。
アドバイスよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
こんばんは。
私も考えてみました。
Sub TestSepMacro()
Dim r As Range
Dim c As Range
Dim i As Long
Dim arBuf As Variant, buf As String, tBuf As Variant
Set r = Range("B1", Cells(Rows.Count, "B").End(xlUp))
For Each c In r
' If Trim(c.Value) <> "" Then '空白以外の場合に処理する **
buf = Replace(c.Value, "、", ",", , , vbTextCompare)
buf = Replace(buf, vbLf, ",", , , vbBinaryCompare)
If Right(buf, 1) <> "," Then
tBuf = tBuf & buf & ","
Else
tBuf = tBuf & buf
End If
buf = ""
'End If '**
Next c
arBuf = Split(tBuf, ",")
r.ClearContents
For i = 1 To UBound(arBuf)
Cells(i, "B").Value = Trim(arBuf(i - 1))
Next i
End Sub
'** を外すと、空白行はなくなります。
そのままですと、空白行はスキップします。
No.5
- 回答日時:
ご要望の要件に対して、使えそうな命令を並べてみました。
細かな処理はしていませんが、参考になれば幸いです。見慣れないのは、Transpose関数くらいでしょうか。これは配列の縦横を入れ替えています。
Sub sample()
Dim a As Variant
a = WorksheetFunction.Transpose(Range("B1:B2"))
a = Join(a, vbLf)
a = Replace(a, "、", vbLf)
a = Split(a, vbLf)
Range("B1").Resize(UBound(a) + 1) = WorksheetFunction.Transpose(a)
End Sub
回答ありがとうございます!
Transpose関数というものは初めて聞きましたが、とても参考になりました!ありがとうございます。
No.3
- 回答日時:
No.2です。
細かい検証をしていませんでした。
前回のコードではセルの最後に読点「、」がない場合はお望みの表示にならないおt思います。
>myStr = myStr & Replace(Replace(Cells(i, "B"), "、", "_"), vbLf, "_")
の行を
>myStr = myStr & "_" & Replace(Replace(Cells(i, "B"), "、", "_"), vbLf, "_")
に変更してください。m(_ _)m
No.2
- 回答日時:
こんにちは!
一例です。
Sub Sample1()
Dim i As Long, myStr As String
Dim myAry
Application.ScreenUpdating = False
Range("C:C").Insert
For i = 1 To Cells(Rows.Count, "B").End(xlUp).Row
myStr = myStr & Replace(Replace(Cells(i, "B"), "、", "_"), vbLf, "_")
Next i
myAry = Split(myStr, "_")
For i = 0 To UBound(myAry)
Cells(i + 1, "C") = myAry(i)
Next i
Range("C:C").SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp
Range("B:B").Delete
Application.ScreenUpdating = True
End Sub
※ いちいち行挿入するのはやめて、
C列に一旦書き出し、B列を削除しています。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/01/06 08:39
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/12/26 12:05
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセル ドロップダウンリスト...
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】列を折りたたみ非表...
-
9月17日でサービス終了らし...
-
【マクロ】アクティブセルの時...
-
ページが変なふうに切れる
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルの循環参照、?
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報