2016-09-30 4 views
1

私は大きなデータセットを扱っています。私はデータをトリミングしようとしています。データのコピー中にデータを連結する

私は自分のニーズにほぼ合うようにいくつかのコードを修正することができました。

Sub CopyData() 
Dim sourceColumn As Range, targetColumn As Range 

Set sourceColumn = Workbooks("Parcels Data.xlsm").Worksheets("Parcels").Columns("A") 
Set targetColumn = Workbooks("Parcel Data for NSDB.xlsm").Worksheets("Imported").Columns("A") 

sourceColumn.Copy Destination:=targetColumn 
Set sourceColumn = Workbooks("Parcels Data.xlsm").Worksheets("Parcels").Columns("B") 
Set targetColumn = Workbooks("Parcel Data for NSDB.xlsm").Worksheets("Imported").Columns("B") 

sourceColumn.Copy Destination:=targetColumn 

End Sub 

これは必要なものをインポートします。

列BとCを値の間のスペースと共に連結する必要があります。この新しいファイルは、他のデータベースにインポートするために使用されるので、特定の形式で必要となります。

私はRange.Copyを使用している間に '&'を使用する方法を理解しようとしています。私は範囲を扱っているので文字列ではないので '&'を使うことはできません。データをコピーするのと同じ時点で連結することは可能ですか?

+1

を2つの値を一緒に連結する方法の質問は、何ですか? '= A1&" "&B1'はセル内で' A1'と 'B1'を取り込み、空白で区切ります。 – BruceWayne

+0

申し訳ありませんが、私は私の質問でより明確にすべきでした。私はRange.Copyを使用している間に '&'を使用する方法を理解しようとしています。私は範囲を扱っているので、文字列ではないので、単に&を使用することはできません。データをコピーするのと同じ時点で連結することは可能ですか? – Grant

+0

@Grant Nopeでは、範囲内の値をループして1つずつ連結するか、ピエールが示唆するように配列などに読み込む必要があります。現実的にはあなたのデータのサイズにもよるが、これは長い時間を費やすべきではない – User632716

答えて

1
Sub CopyData() 
Dim source, dest, i& 
With Workbooks("Parcels Data.xlsm").Worksheets("Parcels") 
    source = Range(.Range("A1"), .Cells(.Rows.Count, 2)).Value 
End With 
ReDim dest(1 To UBound(source), 1 To 1) 
For i = 1 To UBound(dest) 
    dest(i,1) = source(i, 1) & " " & source(i, 2) 
Next 
With Workbooks("Parcel Data for NSDB.xlsm").Worksheets("Imported") 
    Range(.Range("A1"), .Cells(UBound(dest), 1)) = dest 
End With 
End Sub 
+0

ありがとう、コードがどのように働いていたのか分かったら、必要な列をすべて書き換えることができた。これはとても助けになりました! – Grant

1

ループを使用する必要があります。範囲全体を一度に行うことはできません。これはあなたが始める必要があります。

Sub Concat() 

Dim lRow As Long 

lRow = Range("B" & Rows.count).End(xlUp).Row 

For i = 2 To lRow 
    Range("C" & i) = Range("A"& i) & " " & Range("B" & i) 
Next i 

End Sub 
+0

範囲の操作は非常に遅い – Pierre

関連する問題