Microsoft Excel

Herbers Excel/VBA-Archiv

Neue Daten in ein anderes Arbeitsblatt übertragen

Betrifft: Neue Daten in ein anderes Arbeitsblatt übertragen von: Orina
Geschrieben am: 07.04.2008 18:27:09

HAllo Excel-Profis,
Ich habe folgendes Problem:

ich möchte aus einer Liste im Arbeitsblatt "alt" Werte der Spalte A, die in Spalte B mit einem "x" gekennzeichnet sind, in ein neues Arbeitsblatt "neu" übertragen. In dem neuen Arbeitsblatt werden dann in weiteren Spalten zusätzliche Informationen zu diesen Werten hinterlegt. Jede Zeile in dem neuen Arbeitsblatt entspricht somit einem Datensatz
Das lässt sich am Anfang natürlich ganz einfach manuell lösen, in dem man lediglich die nach "x" gefilterten Werte überträgt.
Mein Problem ist jedoch, dass im Arbeitsblatt "alt" durch andere Personen neue Werte irgendwo in die Liste eingefügt werden, die nun automatisch in das Arbeitsblatt "neu" übertragen werden müssen. Und zwar so, dass meine im Arbeitsblatt "neu" bestehenden Datensätze nicht auseinandergerissen werden, d.h. die Zeilen im Arbeitsblatt "neu" vollständig erhalten bleiben. Am besten wäre es dabei, wenn sich die neuen Werte auch noch automatisch nach alphabetischer Reihenfolge in das Arbeitsblatt "neu" eingliedern würden. Der Marker "x" im Arbeitsblatt "alt" wird dabei durch die anderen Personen gesetzt.

Arbeitsblätter, vor Einfügen von neuen Werten
"alt"
abc x
bcd
cde x
def
fgh x

"neu"
abc Infoa
cde Infoc
fhg Infof

und so sollte es nach dem Einfügen von neuen Werten in das Arbeitsblatt "alt" aussehen
"alt"
abc x
bcd
d x
cde x
def
fgh x

"neu"
abc Infoa
cde Infoc
d
fhg Infof

Bitte helft mir

Danke
ORina

  

Betrifft: AW: Neue Daten in ein anderes Arbeitsblatt übertragen von: Wolli
Geschrieben am: 08.04.2008 10:34:05

Hallo Orina, das Makro müsste also folgende Schritte durchlaufen:

Durchlaufe die Liste "alt". Immer, wenn Du ein "x" in der Spalte B findest, prüfe, ob der entsprechende Wert schon in Liste "neu" enthalten ist. Ist das nicht der Fall, suche für diesen Wert einen alphabetisch richtigen Platz, füge eine komplette Zeile ein und setze den Wert ein.

Zu beachten:
- Durch das Entfernen eines "x" in der "alt"-Tabelle wird der Wert in der "neu"-Tabelle nicht gelöscht.
- Es gilt die Annahme, dass die Liste "neu" stets sortiert ist.
- Die Zeilen in Liste "alt" sind eindeutig, d.h. es gibt keine Doppelungen.

Wenn das alles zutrifft, ist dies Dein Makro:


Option Explicit

Sub Listuebernahme()

Dim lngAltZeile As Long, _
    lngNeuZeile As Long, _
    rngZielVorhanden As Range, _
    strEinfuegeWert As String

    lngAltZeile = 1
    Do
        ' "x" vorhanden?
        If Sheets("alt").Cells(lngAltZeile, 2) = "x" Then
            ' Prüfen, ob der Wert schon in der "neu"-Tabelle enthalten ist
            Set rngZielVorhanden = Sheets("neu").Columns(1). _
                  Find(What:=Sheets("alt").Cells(lngAltZeile, 1), _
                  LookAt:=xlWhole)
            ' Wenn er nicht enthalten ist, dann ...
            If rngZielVorhanden Is Nothing Then
                ' Wert merken
                strEinfuegeWert = Sheets("alt").Cells(lngAltZeile, 1)
                ' Einfügeposition suchen [Startpos. zur Sicherheit immer ab Z. 1]
                lngNeuZeile = 1
                Do While Sheets("neu").Cells(lngNeuZeile, 1) < strEinfuegeWert _
                      And Sheets("neu").Cells(lngNeuZeile, 1) <> ""
                    lngNeuZeile = lngNeuZeile + 1
                Loop
                ' Zeile einfügen
                Sheets("neu").Rows(lngNeuZeile).EntireRow.Insert
                Sheets("neu").Cells(lngNeuZeile, 1) = strEinfuegeWert
            End If
        End If
        lngAltZeile = lngAltZeile + 1
    Loop Until Sheets("alt").Cells(lngAltZeile, 1) = ""
End Sub



Hier nochmal als komplette Excel-Datei:
https://www.herber.de/bbs/user/51338.xls

Gruß, Wolli


  

Betrifft: AW: Neue Daten in ein anderes Arbeitsblatt übertragen von: Orina
Geschrieben am: 08.04.2008 18:01:36

Hallo Wolli, vielen Dank;

mein Problem ist doch noch ein bischen komplizierter, als ursprünglich gedacht und ich schaffe mit meinen lausigen VBA-Kenntnissen den Transfer nicht:



im Arbeitsblatt "alt" können in derselben Spalte teilweise dieselben Einträge stehen, unterschieden wird erst in einer weiteren Spalte. In dieser weiteren Spalte können wiederum dieselben Werte stehen. Die Kombination der Werte aus Spalte 1 und Spalte2 ist jedoch einzigartig. D.h. nur beide Spalten zusammen identifizieren den Datensatz im Arbeitabatt "alt". Beide Spalten müssen in das Arbeitsblatt "neu" übertragen werden



Arbeitsblätter, vor Einfügen von neuen Werten

"alt"

abc aaa x

abc bbb x

bcd bbb

cde aaa x

def ccc

fgh ccc x



"neu"

abc aaa Infoa

abc bbb Infoabc

cde aaa Infoc

fhg ccc Infof



und so sollte es nach dem Einfügen von neuen Werten in das Arbeitsblatt "alt" aussehen

"alt"

abc aaa x

abc bbb x

bcd bbb

d bbb x

cde aaa x

def ccc

fgh ccc x



"neu"

abc aaa Infoa

abc bbb Infoabc

cde aaa Infoc

d bbb

fhg ccc Infof



Wie müsste ich Deinen Code anpassen?

Danke!!!

https://www.herber.de/bbs/user/51355.xls


  

Betrifft: AW: Neue Daten in ein anderes Arbeitsblatt übertragen von: Wolli
Geschrieben am: 09.04.2008 09:23:24

Hallo Orina,

ich habe den Code mal angepasst, jedoch (im Gegensatz zum ersten Mal) nur rudimentär getestet, also prüfe ihn gründlich! Statt die Find-Funktion zu nutzen, durchlaufe ich jetzt die ganze Tabelle und teste die Spalten 1 und 2 auf Übereinstimmung.

https://www.herber.de/bbs/user/51365.xls

Gruß, Wolli


  

Betrifft: AW: Neue Daten in ein anderes Arbeitsblatt übertragen von: Orina
Geschrieben am: 09.04.2008 14:13:18

Super!
Das ist genau das, was ich brauche!
Vielen Dank Wolli!


 

Beiträge aus den Excel-Beispielen zum Thema "Neue Daten in ein anderes Arbeitsblatt übertragen"