エクセルで、同じセル内で文字列が並んでおり、セル内にカンマまたはセル内改行があった場合に、新しいセルに改行させるというマクロを作りたいです。
具体的にいうと、
セルB1に「あい、うえ、」、
B2に「お、
かき、く
け 」
とあった場合、これをマクロにかけると、
B1に「あい」、B2に「うえ」、B3に「お」、B4に「かき」、B5に「く」、B6に「け」となる感じです。
マクロを組んでもセル内での改行しかできず、文字列を別のセルに改行させることがどうしてもできません。
アドバイスよろしくお願いいたします。
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.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.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ランキング
-
エクセル: セルの枠を超えて表示
-
Excel countif関数で取り消し線...
-
セル内の一部の文字だけをハイ...
-
セルは大きくさせず、中の文字...
-
エクセルファイルに _x000D_ と...
-
マウスポインターが白十字のまま
-
エクセルで画像を透過させて画...
-
セルを結合しても、文字をセル...
-
エクセルの白黒の反転で困って...
-
エクセル2013で英単語を折り返...
-
エクセルで1つのセルにスクロ...
-
エクセルのIF関数で、文字が...
-
エクセルのカメラがずれる
-
Excelでcsvやtxtで保存する時に...
-
エクセルでセルを上下に結合し...
-
エクセルの2つのセルを内容も消...
-
Excel 隣のセルに文字を表示さ...
-
セルの大きさを個別に変更したい。
-
Excel入力で勝手にエンター押さ...
-
エクセルで半角漢字
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル: セルの枠を超えて表示
-
Excel countif関数で取り消し線...
-
セル内の一部の文字だけをハイ...
-
エクセルの白黒の反転で困って...
-
セルは大きくさせず、中の文字...
-
マウスポインターが白十字のまま
-
エクセルファイルに _x000D_ と...
-
Excelでcsvやtxtで保存する時に...
-
エクセルで画像を透過させて画...
-
エクセルで1つのセルにスクロ...
-
エクセルでセルを上下に結合し...
-
エクセルの2つのセルを内容も消...
-
セルを結合しても、文字をセル...
-
エクセルで特定の列のセルだけ...
-
エクセルの入力規則プルダウン...
-
VBA:結合されたセルに対する「...
-
エクセルで右隣のセルより優先...
-
Excel入力で勝手にエンター押さ...
-
エクセル 折り返して全体を表...
-
エクセル2013で英単語を折り返...
おすすめ情報