Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1388to1392
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Concatenate einfügen über gesamte Spalte

VBA Concatenate einfügen über gesamte Spalte
30.10.2014 12:10:53
Monika
Hallo zusammen,
ich hänge hier leider mal wieder ein bisschen und hoffe auf eine Erleuchtung :)
Ich habe zwei Spalten (D und E) deren Inhalt ich in Spalte F verketten will (allerdings erst ab Spalte 2, das konnte ich leider noch nicht umsetzen).Ich hab grob schon mal etwas erstellt, mein Problem ist, dass ich zwar die Formel einfügen kann, aber nicht verstehe, wie ich jetzt sage, dass nicht immer der gleiche Wert eingefügt werden soll, sondern immer eine Spalte runtergesprungen werden soll. Also im Prinzip, wie wenn man in Excel die Formel runter zieht und kein $-Zeichen eingebaut hat... Ich hoffe, das ist verständlich.
Hier ist, was ich bisher habe:
Sub CreatePrimaryKey()
Do While ActiveCell.Offset(0, -1)  ""  'Loops until the active cell is blank.
ActiveCell.Offset(0, 1).FormulaR1C1 = _
ActiveCell.Offset(0, -1) & " " & ActiveCell.Offset(0, 0)
ActiveCell.Offset(1, 0).Select
ActiveCell.Formula = "=CONCATENATE(D2,E2)"
Loop
End Sub

In der Concatenate Funktion stehen jetzt noch die exakten Zellen - könnt ihr mir vielleicht sagen, wie ich das mache, dass nicht immer D2 und E2 verkettet werden sondern eben immer eine Spalte runter gewandert wird?
Vielen Dank schon mal und liebe Grüße :)

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Concatenate einfügen über gesamte Spalte
30.10.2014 12:33:38
fcs
Hallo Monika,
in der R1C1-Schreibweise kann man den Bezug in den Formeln "einfach" auf relativ einstellen.
Sub CreatePrimaryKey()
Range("F2").Select
Do While ActiveCell.Offset(0, -1)  ""  'Loops until the active cell is blank.
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Allerdings sollte man hier nicht unbedingt mit Select und Activecell in einer Schleife arbeiten, sondern die die letzte Zeile mit Daten ermitteln und die Formeln in einer Anweisung einfügen.

'Alternative - alle Formeln werden in Spalte F mit einer Anweisung eingefügt
Sub CreatePrimaryKey_2()
Dim Zeile As Long
With ActiveSheet
'letzte Zeile in Spalte E
Zeile = .Cells(.Rows.Count, 5).End(xlUp).Row
If Zeile >= 2 Then
With .Range(.Cells(2, 6), .Cells(Zeile, 6))
.FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
.Calculate
'        .Value=.Value 'Formeln durch Werte ersetzen
End With
End If
End With
End Sub
Gruß
Franz

Anzeige
AW: VBA Concatenate einfügen über gesamte Spalte
30.10.2014 12:48:29
Monika
Hallo,
vielen Dank, die zweite Version funktioniert super! :)

Lösung per .FormulaR1C1
30.10.2014 12:44:25
NoNet
Hallo Monika,
zuerst einmal eine kleine Korrektur Deiner Formulierung : "Spalte 2" und "eine Spalte runter" gibt es in Excel nicht wirklich, denn die SPALTEN werden standardmäßig mit Buchstaben (A bis XFD) bezeichnet, varrieren also in der Horizontalen ("von links nach rechts" und NICHT "oben nach unten"), während die ZEILEN von 1 bis 1048576 nummeriert sind, also in der Vertikalen "von oben nach unten" variieren !
Hier eine kurze "schmerzlose" VBA-Lösung Deines Anliegens :
Sub CreatePrimaryKey2()
With [F2]
.Resize(.End(xlDown).Row - .Row).FormulaR1C1 = _
"=CONCATENATE(RC[-1],RC[-2])"
End With
End Sub
Salut, NoNet

Anzeige
AW: Lösung per .FormulaR1C1
30.10.2014 15:03:20
Monika
Oh tut mir Leid, ich meinte natürlich Zeile runter, das hast Du richtig erkannt!
Danke noch für deinen Tip :)

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige