VBATips

セルの値を改行で分割する【InstrRev】【Do Until 】【ExcelVBA】

セルの改行は便利ですが、1行1セルにするといった無駄な社内ルールがあったりします。

その場合は、マクロで分割しましょう。

セルの値を改行で分割するサンプルコード

選択しているセルの場合と、Rangeを指定する場合とtmpに入れるデータを変更可能にしています。

'■改行でセルを分割する
Sub call_cells_split_vblf()

    Dim tmp As Range
'    Set tmp = ActiveCell '選択しているセルの場合
    Set tmp = ActiveSheet.Range("A1") 'アクティブシート セルA1の場合
    
    With tmp
        '■セルの値の中からVbLfがなくなるまで繰り返す
        Do Until InStr(tmp, vbLf) = 0
        
            '対象セルの下のセルが空白でなければ、空白セルを挿入する
            If .Offset(1, 0).Value <> "" Then
                .Offset(1, 0).Insert shift:=xlDown
            End If
            '■改行までの値を貼り付ける
            .Offset(1, 0).Value = Mid(.Text, InStrRev(.Text, vbLf) + 1)
            .Value = Left(.Text, InStrRev(.Text, vbLf) - 1)
        Loop
    End With
    '■イメージ
    'セルA1 あ     →セルA1 あ
    '       い     →セルA2 い
    '       う     →セルA3 う
    '       え     →セルA4 え
    '       お     →セルA5 お
    'セルA2       →
    'セルA3       →
    'セルA4      →
    'セルA5       →
    
End Sub

関連記事

コメント

タイトルとURLをコピーしました