【Excel VBA】複数セルの値を一つのセルに貼り付けるツール(コピペですぐ使える)

Excel内でコピーをして貼り付けを行う際に、複数セルにまたがった範囲をコピーし、貼り付けた場合は、複数セルにまたがった状態で指定した箇所に貼り付けられます。

 

複数セルの値を一つのセルに貼り付けたいと思い、色々と試してみましたが、できなかったためツール『複数セルの値を一つのセルに貼り付けるツール』をExcelマクロ(アドイン)で作成しました。

 

これを使用すれば定例業務の業務効率化が図れるかと思いますので、是非ご活用頂けたらと思います。

 

『複数セルの値を一つのセルに貼り付けるツール(アドイン)』の概要

ExcelにVBAコードを入れてマクロを作成し、アドインとして保存します。

 

そのアドインを取込むとリボンにコピーと貼り付けのタブが表示されるので、コピーと貼り付けにそれぞれ該当するボタンを押すことで該当のマクロを実行でき、複数セルの値を一つのセルに貼り付けることができます。

 

当ツールの使用方法

基本的な機能、操作方法の説明

1.複数セルの値を一つのセルに貼り付けたい任意のExcelファイルを開きます。

2.「開発」タブの「Excelアドイン」より、作成したアドインファイルを指定(参照)します。

 

3.対象のセルを選択して、「特殊なコピペ」から「複数セルをコピー」を選択します。

 

4.貼り付けたいセルを選択して、「特殊なコピペ」から「一つのセルに貼り付け」を選択します。

 

コピーする場合、複数列に入っているテキストに対して指定した文字で区切り結合させて表示されます。

 

留意事項

・何もないところをコピーした場合は、クリップボードにコピーはされません。

・区切り文字は、エスケープ文字(カンマ、スラッシュなど)以外の英数字や日本語ひらがな等、なんでも指定できます。

 

使用する際の事前準備

このページの下部にある「Excelファイルのサンプル」からExcelファイルを取得し、「準備の手順」内にあるVBAコードを取得したExcelファイルに記載して保存すれば、すぐに当ツールを使用できます。

 

以下にその手順を説明していきます。

 

準備の手順

1.サンプルのダウンロードはこちら」からサンプル(Excelファイル)をダウンロードし、ファイルを開きます。

※インターネットにあるマクロファイルをダウンロードすることはセキュリティ上リスクがあるので、マクロ無しExcelファイルを公開しています

 

2.ダウンロードしたExcelファイルの上部にあるリボンの「開発」タブから「visual basic」を選択して、VBE(Visual Basic Editor)を起動させます。

 

リボンに「開発」タブが表示されていない場合は、以下を参照ください。

(参考サイト:記事「Excel VBAを始める前に、最初にやっておくべき初期設定内容はこれ」の『開発』タブを表示させる

 

3.「プロジェクト」に「標準モジュール」を追加して、追加された「Module1」にVBAコードを記載します。

 

以下にあるVBAコードを「Module1」内のエディターにコピーして貼り付けます。

 

※VBAコードの右上のアイコンをクリックするとソースコードをコピーできます

Option Explicit

'-----(設定値)------------------------
Private Const SEPARATE_VALUE = ","        '1.区切り文字の初期値
'---------------------------------------

Dim SepValue As String

'===================================
'複数セルをコピーした際の処理
'===================================
Sub Copy_Click(control As IRibbonControl)
    
    Dim tmpValueArr() As Variant
    Dim cntRow, cntCol, i, j As Long
    Dim unionValue As String
    Dim tmpValue As String

    Dim c As Range
    Set c = Selection
    
    '選択されたセルが一つの場合はそのまま代入する
    If Selection.Cells.Count = 1 Then
        unionValue = c.Value
    Else
        tmpValueArr = c.Value
        cntRow = UBound(tmpValueArr)
        cntCol = UBound(tmpValueArr, 2)
        
        For i = 1 To cntRow
            For j = 1 To cntCol
                If j = 1 Then
                    tmpValue = tmpValueArr(i, j)
                Else
                    tmpValue = tmpValue & SepValue & tmpValueArr(i, j)
                End If
            Next
            If i = 1 Then
                unionValue = tmpValue
            Else
                unionValue = unionValue & vbLf & tmpValue
            End If
        Next
    End If
    
    'クリップボードにコピーする
    With CreateObject("Forms.TextBox.1")
        .MultiLine = True
        .text = unionValue
        .selstart = 0
        .sellength = .textlength
        .Copy
    End With
    
End Sub

'===================================
'一つのセルに貼り付けをした際の処理
'===================================
Sub Paste_Click(control As IRibbonControl)

    Dim Form As Object: Set Form = CreateObject("Forms.TextBox.1")
    Form.MultiLine = True
    
    'クリップボードに貼り付ける
    If Form.CanPaste = True Then Form.Paste
    Selection.Value = Form.text

End Sub

'-------------------------
'区切り文字のテキスト内容を取得する際の処理
'-------------------------
Sub editBox_getText(control As IRibbonControl, ByRef returnValue)
    SepValue = SEPARATE_VALUE
    returnValue = SepValue
End Sub

'-------------------------
'区切り文字に変更があった際の処理
'-------------------------
Sub onChange(control As IRibbonControl, text As String)
    SepValue = text
End Sub

 

4.ファイルを保存する際は「Excelアドイン(*.xlam)」を選択して、保存します。

 

これで事前準備は完了です。

あとは「当ツールの使用方法」で記載された方法でツールを実行できます。

 

また、このようなExcelVBAを用いた業務効率化を行うときに、以下の書籍が初心者向けでとても参考になると思いますので、良かったらご参照ください。

 

なお、当マクロの開発環境として、OSは “Windows10” 、Excelのバージョンは “Microsoft Office 365″ で行っており、当環境では動作確認ができていますが、他のすべての環境で正常に動作するかは確認できていません。

 

正常に動作しない場合は、コメントいただければ幸いです。

 

サンプルのダウンロードはこちら

【Excel_VBA】複数セルの値を一つのセルに貼り付けるツール 

上記よりダウンロードし、記事の途中にありましたVBAコードを組み込んでアドインのツールとして使用してください。

※インターネットにあるマクロファイルをダウンロードすることはセキュリティ上リスクがあるので、マクロ無しExcelファイルを公開しています

 

他に要望等ありましたら、可能な限り改修等を対応しますのでコメント頂ければと思います

 

 

<このツールが『結構使える!』と思ったら、下のグッドボタンを押していただけたら幸いです>

コメントを残す

CAPTCHA