マクロで最後の行を見つけて、値を連結する

最後の行を見つけ、その行までセルの値をループで1つずつ取得し、それらを連結する

Sub ConcatenateValues()
    Dim lastRow As Long
    Dim i As Long
    Dim result As String
    
    ' 最後の行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    ' セルの値を1つずつ取得して連結
    For i = 1 To lastRow
        result = result & Cells(i, 1).Value
    Next i
    
    ' 結果をメッセージボックスに表示
    MsgBox result
End Sub
Sub GetDataFromSheets()
    Dim result() As String ' 結果を格納する配列
    Dim sheetName As String ' シート名を格納する変数
    Dim lastRow As Long ' 最後の行を格納する変数
    Dim i As Long ' ループ用の変数
    Dim j As Long ' ループ用の変数
    Dim sqlFile As Integer ' SQLファイルの番号を格納する変数
    Dim ws As Worksheet ' ワークシートを格納する変数
    
    ' 目次シートから最後の行を取得
    lastRow = Sheets("目次").Cells(Rows.Count, "B").End(xlUp).Row
    
    ' ループで各シートのデータを取得
    For i = 4 To lastRow
        sheetName = Sheets("目次").Cells(i, "B").Value ' シート名を取得
        If Sheets("目次").Cells(i, "C").Value = "○" Then ' 条件に合致する場合
            ' シートから最後の行を取得
            Set ws = Sheets(sheetName)
            lastRow = ws.Cells(Rows.Count, "B").End(xlUp).Row
            
            ' シートのデータを取得して配列に格納
            For j = 4 To lastRow
                result = Split(result & ws.Cells(j, "B").Value, ",") ' カンマ区切りで配列に格納
            Next j
        End If
    Next i
    
    ' 結果をシートに貼り付け
    For i = 0 To UBound(result)
        Sheets("結果").Cells(i + 1, "A").Value = result(i)
    Next i
    
    ' 結果をSQLファイルに書き込み
    sqlFile = FreeFile
    Open "C:\result.sql" For Output As sqlFile
    For i = 0 To UBound(result)
        Print #sqlFile, result(i)
    Next i
    Close sqlFile
End Sub


この記事が気に入ったらサポートをしてみませんか?