Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1316to1320
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

Veränderung von Spalten berücksichtigen

Veränderung von Spalten berücksichtigen
25.06.2013 09:18:46
Spalten
Hallo zusammen,
ich habe folgendes Problem. Ich habe ein kleines VBA geschrieben um 2 Zeilen zu Verketten. Es handelt sich in Spalte 6 und 5 um den Vor- und Nachnamen. Jetzt ist aber das Problem, dass sich die Spalten manchmal ändern als nicht fest sind.
Wie kann ich das umschreiben, dass er die Spaltenindizies in einer Vorababfrage bestimmen.
Mein derzeitiges Programm sieht so aus
Option Explicit
Sub Machs()
Application.ScreenUpdating = False
Dim WKA As Sheets
Dim WKS As Worksheet
Dim LZeile As Integer
Dim Zeile As Integer
Set WKA = Sheets(Array("Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Sep", "Okt", "Nov", "Dez") _
_
)
For Each WKS In WKA
LZeile = WKS.Cells.SpecialCells(xlCellTypeLastCell).Row
For Zeile = LZeile To 1 Step -1
WKS.Cells(Zeile, 23) = WKS.Cells(Zeile, 6) & " " & WKS.Cells(Zeile, 5)
Next Zeile
Next
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Veränderung von Spalten berücksichtigen
25.06.2013 09:27:55
Spalten
Hi Thomas,
fix die Spaltenangaben dynamisiert.
Grüße,
Klaus M.vdT.
Sub startemachs()
Call Machs(5, 6)
End Sub
Sub Machs(spaltevor As Long, spaltenach As Long)
Application.ScreenUpdating = False
Dim WKA As Sheets
Dim WKS As Worksheet
Dim LZeile As Integer
Dim Zeile As Integer
Set WKA = Sheets(Array("Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Sep", "Okt", "Nov", "Dez") _
)
For Each WKS In WKA
LZeile = WKS.Cells.SpecialCells(xlCellTypeLastCell).Row
For Zeile = LZeile To 1 Step -1
WKS.Cells(Zeile, 23) = WKS.Cells(Zeile, spaltevor) & " " & WKS.Cells(Zeile,  _
spaltenach)
Next Zeile
Next
End Sub

Anzeige
AW: Veränderung von Spalten berücksichtigen
25.06.2013 09:32:10
Spalten
Super :-)
Aber gibt es eine Möglichkeit. Excel die Spalten selbst bestimmen zu lassen?
Zu Beispiel sind die Spaltenbeschriftungen immer gleich.
Als Spalte 5 heißt immer Nachname und Spalte 6 heißt immer Vorname
Quasi so etwas wie ein Suche "Nachname" gib Spaltenindex aus.

AW: Veränderung von Spalten berücksichtigen
25.06.2013 09:39:36
Spalten
Hi Thomas,
dann so, wenn die Überschriften in Zeile 1 stehen. Die Zeile 1 habe ich dynamisiert.
Anmerkung: der Code kann aber nicht funktionieren, da du hier
For Zeile = LZeile To 1 Step -1
JEDE Zeile angehst, inklusive der Überschriften-Zeile. Aber ich kenne deine Datei nicht (Zaunpfahl, Upload-Button) und kann das nicht prüfen. Ich vermute aber, es müsste
For Zeile = LZeile To 2 Step -1 heissen, und in Zeile 1 stehen dann die Überschriften.
Wenn in einem der Blätter "vorname" statt "Vorname" steht, schmiert der Code ab. Ich gehe davon aus, dass deine Datenbasis sauber ist und baue keine Fehlerbehandlung ein.
Sub Machs()
Application.ScreenUpdating = False
Const headline As Long = 1    'Überschriften in Zeile 1!
Dim spalteVor As Long
Dim spalteNach As Long
Dim WKA As Sheets
Dim WKS As Worksheet
Dim LZeile As Integer
Dim Zeile As Integer
Set WKA = Sheets(Array("Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Sep", "Okt", "Nov", "Dez"))
For Each WKS In WKA
LZeile = WKS.Cells.SpecialCells(xlCellTypeLastCell).Row
spalteVor = WorksheetFunction.Match("Vorname", WKS.Rows(headline), False)
spalteNach = WorksheetFunction.Match("Nachname", WKS.Rows(headline), False)
For Zeile = LZeile To 1 Step -1
WKS.Cells(Zeile, 23) = WKS.Cells(Zeile, spalteVor) & " " & WKS.Cells(Zeile,  _
spalteNach)
Next Zeile
Next
End Sub

Anzeige
AW: Veränderung von Spalten berücksichtigen
25.06.2013 09:43:06
Spalten
Wirklich klasse!
Und du hast recht mit dem Wertebereich der For each.
Danke schön Klaus!

Danke für die Rückmeldung! owT.
25.06.2013 09:44:03
Klaus
.

Die Schleife ist unnötig ...
25.06.2013 09:53:13
Klaus
Hallo Thomas,
das ganze geht auch ohne die Schleife über alle Zellen, und dann deutlich schneller. Wenn du nur ein paar dutzend Datensätze pro Blatt hast, merkst du keinen Unterschied ... aber bei ein paar tausend sollte diese Lösung deutlich performanter sein:
Sub Machs()
Application.ScreenUpdating = False
Const Headline As Long = 1
Const AusgabeSpalte As Long = 23
Dim SpalteVor As Long
Dim SpalteNach As Long
Dim WKA As Sheets
Dim WKS As Worksheet
Dim LZeile As Integer
Set WKA = Sheets(Array("Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Sep", "Okt", "Nov", "Dez"))
For Each WKS In WKA
With WKS
LZeile = .Cells.SpecialCells(xlCellTypeLastCell).Row
SpalteVor = WorksheetFunction.Match("Vorname", .Rows(Headline), False)
SpalteNach = WorksheetFunction.Match("Nachname", .Rows(Headline), False)
With .Range(.Cells(2, AusgabeSpalte), .Cells(LZeile, AusgabeSpalte))
.FormulaR1C1 = "=RC" & SpalteVor & "&"" ""&RC" & SpalteNach
.Value = .Value
End With
End With
Next WKS
End Sub
Grüße,
Klaus M.vdT.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige