を見つけて選択することがどこ 列が配置されています(ただし、最初の行にあります)。
最初の行の最初の反復で列が検出され、見つかった列番号ごとに値が反復処理され、新しい文字列が作成され、列10(または他の列)に書き込まれます。あなたは
はここ
(... 1
lastRow
はなど、他のよりも大きいとき)、このような反復処理を停止するとき、などのニーズごとにさらにロジックを追加することができますが、後で費やすことができ、基本的な作業コードです:
ここで
Sub findAndConcat()
'last column with data
lColumn = Cells(1, Columns.Count).End(xlToLeft).Column
'find Postnr and Postort columns
For i = 1 To lColumn
If Cells(1, i) = "Postnr" Then
PostnrColumn = i
'Convert from column number to column letter
PostnrColumnName = Split(Cells(, PostnrColumn).Address, "$")(1)
End If
If Cells(1, i) = "Postort" Then
PostortColumn = i
PostortColumnName = Split(Cells(, PostortColumn).Address, "$")(1)
End If
Next i
Dim PostnrValue As String
Dim PostortValue As String
Dim newString As String
'last row with data per column
PostnrLastRow = ActiveSheet.Cells(Rows.Count, PostnrColumnName).End(xlUp).Row
PostortLastRow = ActiveSheet.Cells(Rows.Count, PostortColumnName).End(xlUp).Row
'Iterating the columns rows and building the new concatinated string
For i = 2 To PostnrLastRow
PostnrValue = Cells(i, PostnrColumn).Value
PostortValue = Cells(i, PostortColumn).Value
newString = PostnrValue & " " & PostortValue
ActiveSheet.Cells(i, 10).Value = newString
Next i
End Sub
は結果である:
![result](https://i.stack.imgur.com/0GD1W.jpg)
は、答えを受け入れてください。あなたの質問を解決します(これと将来の回答についても)。 –
は、私はこのエラーを取得1004: アプリケーション定義またはオブジェクト定義のエラー、ラインに関する PostnrLastRow = ActiveSheet.Cells(Rows.Count、PostnrColumnName)あなたはシートどこにする必要があり@Heresh .END(xlUp).Row – Heresh
データは(「ActiveSheet」がコードで使用されている)、コードを実行します。どのシートからでも実行したい場合は、シートを定義して設定し、 'ActiveSheet'の代わりに使用してください。今のところ、_Postr_と_Postort_に関連する列を含むシートを選択し、コードを実行してください。 –