2016-09-30 97 views
1

我正在處理大型數據集。我正在嘗試修剪數據。複製數據時連接數據

感謝您在stackoverflow上查看我能夠修改一些代碼,以適應我的需要差不多。

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

有什麼問題,如何連接兩個值加在一起?單元格中的'= A1&「」&B1'將採用'A1'和'B1'中的內容,並用空格分開。 – BruceWayne

+0

對不起,我應該在我的問題中更清楚。我一直想弄清楚如何在使用Range.Copy時使用'&'。我不能只使用'&',因爲它不是一個字符串,因爲我正在處理範圍。是否可以在複製數據的同一時間點進行連接? – Grant

+0

@Grant Nope,你必須循環遍歷範圍中的值並逐個連接 - 或者按照Pierre的建議將它們讀入數組中。實際上,雖然取決於你的數據的大小,這應該不需要很長的時間 – 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