2016-09-30 6 views
1

Ich arbeite mit einem großen Dataset. Ich versuche, die Daten zu trimmen.Verketten von Daten beim Kopieren der Daten

Dank auf Stackoverflow sah ich in der Lage, etwas Code zu ändern, um meine Bedürfnisse fast zu erfüllen.

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 

Dies importiert, was ich brauche.

Ich muss Spalten B und C zusammen mit einem Leerzeichen zwischen den Werten verketten. Diese neue Datei wird für den Import in andere Datenbanken verwendet, so dass ich sie in einem bestimmten Format brauche.

Ich habe versucht, herauszufinden, wie man "&" verwenden, während Sie Range.Copy verwenden. Ich kann nicht einfach '&' verwenden, weil es keine Zeichenfolge ist, da es sich um Bereiche handelt. Ist es möglich, zum gleichen Zeitpunkt wie das Kopieren der Daten zu verketten?

+1

Was die Frage ist, wie zusammen zwei Werte verketten? '= A1 &" "& B1' in einer Zelle nehmen, was in' A1' und 'B1' ist, und trennen mit einem Leerzeichen. – BruceWayne

+0

Entschuldigung, ich hätte in meiner Frage klarer sein sollen. Ich habe versucht, herauszufinden, wie man '&' bei der Verwendung von Range.Copy verwendet. Ich kann nicht einfach '&' verwenden, weil es keine Zeichenfolge ist, da es sich um Bereiche handelt. Ist es möglich, zum gleichen Zeitpunkt wie das Kopieren der Daten zu verketten? – Grant

+0

@Grant Nein, Sie müssen die Werte im Bereich durchlaufen und nacheinander einscannen - oder Sie lesen sie in ein Array usw., wie Pierre es vorschlägt. Realistisch, aber abhängig von der Größe Ihrer Daten, sollte dies nicht lange dauern – User632716

Antwort

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

Vielen Dank, sobald ich herausgefunden habe, wie der Code funktionierte, konnte ich ändern, um alle Spalten ausfüllen, die ich brauchte. Das hat sehr geholfen! – Grant

1

Sie müssen eine Schleife verwenden - Sie können es nicht für den gesamten Bereich gleichzeitig tun. Dies sollte Ihnen den Start:

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

Bereich Manipulationen sind sehr langsam – Pierre

Verwandte Themen