Hallo liebe Leute,
stehe vor einen Problem das ich einfach nicht lösen kann.
Sub MandatsNrInNeueSpalte()
Dim wksLookUP As Worksheet
Dim Zeile As Integer
Dim ZeileMax As Long
Set wksLookUP = tabLookUp
Application.ScreenUpdating = False
With ActiveSheet
ZeileMax = .Cells(Rows.Count, 1).End(xlUp).Row
For Zeile = 2 To ZeileMax
'Zelle in eine neue Spalte eintragen der gleichen worksheets
.Cells(Zeile, 8).Value = ExtraktMandatsnummer(.Cells(Zeile, 5).Value)
' .Cells(Zeile, 7).Value = ExtraktMandatsnummer(.Cells(Zeile, 5).Offset(0, -2).Value)
' .Cells(Zeile, 7).Value = ActiveCell.Offset(0, -2).Value
' write Mandatsnummern in sheet tabLookUp!
' tabLookUp.Cells(Zeile, 2).Value = ExtraktMandatsnummer(.Cells(Zeile, 5).Value)
'
' tabLookUp.Cells(Zeile, 1).Value = ExtraktMandatsnummer(.Cells(Zeile, 5).Offset(0, -2).Value)
'Here I like to offset wherever it findes a result offset it two columns to the left and insert it into tabLookUp in column A??
' tabLookUp.Cells(Zeile, 1).Value = ExtraktMandatsnummer(.Cells(Zeile, 5).Offset(0, -2).Value)
' tabLookUp.Cells(Zeile, 1).Value = ExtraktMandatsnummer(.Cells(Zeile, 5).Offset(0, -2).Value)
' tabLookUp.Cells(Zeile, 1).Value = ExtraktMandatsnummer.Offset(0, 2).Value
' tabLookUp.Cells(Zeile, 1).Value = activesheet(.cells(zeile,1).value
' tabLookUp.Cells(Zeile, 1).Value = ActiveCell.Cells.Offset(0, -2).Value
Next Zeile
End With
Application.ScreenUpdating = True
End Sub
hier der Code mit verschiedenen Ansätzen.
Die Schleife läuft durch ein tabellenblatt und findet daten. Diese Daten werden dann mit der ExtraktMandatsnummer function aufbereitet. Das funktioniert auch soweit.
Nun möchte ich aber verschiedene Spalten von den gefundenen Spalten also mit offset in ein anderes oder in das selbe Tabellenblatt kopieren.
Momentan funktioniert leider nur das übergeben von der Funktion in eine neue Spalte aber leider noch nicht mit einen offset.
Komme leider nicht weiter und hab auch schon ewig gegoogelt aber nicht das richtige gefunden.
HOffe jemand könnte mir diesbezüglich helfen?
LG
Albert
ZitatMomentan funktioniert leider nur das übergeben von der Funktion in eine neue Spalte aber leider noch nicht mit einen offset.
Dein Vorgehen ist etwas ineffizient, zellenweises Schreiben und Umschreiben ist wegen der vielen Objektzugriffe langwierig. Siehe da auch Performance (1) - Vorwort + Schleifen die keiner braucht (http://www.online-excel.de/excel/singsel_vba.php?f=60)
So richtig durchschaue ich Dein Vorhaben nicht, eine erklärende Mappe ist auch nicht vorhanden. Da skizziere ich einen Weg, wie man ihn etwa gehen könnte:
- ganze Spalte(n) - entsprechen einem Bereich - in ein Array überführen
- mittels Schleife im Array Werte überarbeiten (Einsatz der Funktion auf Einzelwerte)
- Arrayinhalt auf Zielbereich ablegen
Hallo Eberhard
zuerst mal vielen Dank für Deine Antwort!
Na ja das mit der Geschwindigkeit oder das ineffizente Prozedur liegt wahrscheinlich daran das es in dieser besagten Spalte einfach zu viele verschiedene Werte zu bearbeiten sind. Und auch natürlich mein noch nicht ganz fitter Umgang mit VBA ;-)
Aber ich lerne und versuche...
Ich kenne den Umgang mit Arrays auch ein wenig nur ist es schwierig da die Werte nicht immer in der gleichen Position vorkommen.
Danke für Deinen link ich werde es mal genau ansehen und mich danach nochmal melden.
mfg
Albert