データの最後に到達するまで、各行の7列のデータを結合するExcelマクロが必要です。たとえば、次のような式がある場合:
=A1&B1&C1&D1&E1&F1&G1
このような順序でファイルの最後まで行ごとに増分するようにマクロを作成するにはどうすればよいですか?
=A1&B1&C1&D1&E1&F1&G1
=A2&B2&C2&D2&E2&F2&G2
=A3&B3&C3&D3&E3&F3&G3
データの最後に到達するまで、各行の7列のデータを結合するExcelマクロが必要です。たとえば、次のような式がある場合:
=A1&B1&C1&D1&E1&F1&G1
このような順序でファイルの最後まで行ごとに増分するようにマクロを作成するにはどうすればよいですか?
=A1&B1&C1&D1&E1&F1&G1
=A2&B2&C2&D2&E2&F2&G2
=A3&B3&C3&D3&E3&F3&G3
非常に多くの答えがあるので、私が強調していたアシリアと私が強調していた主な焦点は無駄になりました:)
ただし、それでもVBAの回答が必要な場合。この方法を使用してください。これは、またはよりもはるかに高速です。Looping
Autofill
Option Explicit
Sub Sample()
Dim LastRow As Long
Dim Ws As Worksheet
Set Ws = Sheets("Sheet1")
LastRow = Ws.Range("A" & Ws.Rows.Count).End(xlUp).Row
'~~> If your range doesn't have a header
Ws.Range("H1:H" & LastRow).Formula = "=A1&B1&C1&D1&E1&F1&G1"
'~~> If it does then
Ws.Range("H2:H" & LastRow).Formula = "=A2&B2&C2&D2&E2&F2&G2"
End Sub
1000行ある場合は、コードを実行する前にスイッチをオフScreenupdating
にして手動に変更Calculation
し、コードの最後でそれらをリセットすることをお勧めします。
これを行う最も簡単な方法は、assyliasが言うように入力することだと思いますが、VBAを使用する場合は次のようにします。
Selection.AutoFill Destination:=Range("Your Fill Range"), Type:=xlFillDefault
他の行にコピーする必要があります。
コメントやその他の回答に100%同意します。なぜこれを行うために、VBAが必要なのですか。しかし、元の質問に答えるために、これが私がそれを達成する方法です。
Sub FillAllWithFormula()
Dim i As Variant
Dim wsht As Worksheet
'If you are using this for a specific Worksheet use the following
Set wsht = ThisWorkbook.Worksheets(yourWorksheetName)
'or if you are always using this for the active sheet use the following
Set wsht = ActiveSheet
For i = 1 To wsht.Rows.Count
'Replace "X" with the column letter you want your formula to appear in
wsht.Range("X" & i).Formula = "=A" & i & "&B" & i & "&C" & i & "&D" & i & "&E" & i & "&F" & i & "&G" & i
Next
Set wsht = Nothing
End Sub