選択範囲値区切り文字連結書き出し 

選択範囲の値を区切り文字で連結した値を取得する version1.0

ホットキーに割り当てると使いやすい。
選択範囲のセルにある値を区切り文字で連結した形で選択範囲の最初のセルに書き出す。
選択範囲の1番目は書き出し用とするので、連結対象としない。
書き出しセルに値がすでにある場合は追記ではなく上書きをするので注意。

Const DELIMITER = ","
'最初に選択したセルに2つ目以降に選択したセルの値を区切り文字で連結したものを格納する
Sub writeValueWithCommaDelimiterFromSelectRanges()
    '1は書き出しセルだから無視する。
    Dim count As Integer: count = 1
    
    'ループを1周空振りさせるところがポイント
    For Each rcell In Selection
        If count = 2 Then
            'こっちに先に入るから事前に値があっても上書きする。追記はしない
            Selection.Item(1, 1).value = rcell.value
        ElseIf count > 2 Then
            Selection.Item(1, 1).value = Selection.Item(1, 1).value & DELIMITER & rcell.value
        End If
        count = count + 1
    Next
End Sub
'↓うまくいかなかったパターン。誤作動が多い。選択範囲が繋がっていたらまだ動く(1ドラッグ以内という意味)
Sub batPattern()
    Debug.Print Selection.count
    For i = 2 To Selection.count
        Set rcell = Selection.Item(i)
        Debug.Print rcell.Address
        Selection.Item(1, 1).value = Selection.Item(1, 1).value & DELIMITER & rcell.value
    Next
End Sub

なのでselectionのforループは要注意だね。



コメント