Verhindern von Redundanzen in Excel Datenübertrag

Hallo,

ich hab ein Problem mit meinem Excel Programm.

Ich kopiere Daten aus einem Arbeitsblatt und füge Sie in ein zweites ein. Jetzt passiert es aber, dass ich Redundanzen in meiner Tabelle habe.

Frage: Wie kann man verhindern, dass ich doppelte Einträge in meiner zweiten Arbeitsmappe habe. Er soll den 1. Eintrag machen und zum nächsten gehen und dabei die Einträge überspringen, die = 1. Eintrag sind.

Hier mein bisheriger Code

Dim ErstSpalt As Long, LetzteSpalt As Long
Dim SemNr As String, Semtitel As String, i As Integer, a As Integer

ErstSpalt = Sheets(„Plan 1“).Cells(1, 2).Value
LetzteSpalt = Sheets(„Plan 1“).Cells(1, 3).Value

For i = ErstSpalt To LetzteSpalt
a = i - 4

Sheets(„Plan 1“).Cells(8, i).Value = Left(Sheets(„Statistik“).Cells(a, 6).Value, 4)
Sheets(„Plan 1“).Cells(7, i).Value = Sheets(„Statistik“).Cells(a, 7).Value

Next i
End Sub

Vielen Dank im voraus.

Sven

Hallo,

wenn deine Redundanzen unmittelbar hintereinander liegen, dann mach folgendes:

Dim ErstSpalt As Long, LetzteSpalt As Long
Dim SemNr As String, Semtitel As String, i As Integer, a As
Integer

dim neueSpalte as integer, ident as boolean

ErstSpalt = Sheets(„Plan 1“).Cells(1, 2).Value
LetzteSpalt = Sheets(„Plan 1“).Cells(1, 3).Value

neueSpalte = ErstSpalt

For i = ErstSpalt To LetzteSpalt
a = i - 4

if a

Hallo Maria,

das Programm läuft nicht…

Ich erläutere mal die Programmzeilen meines Programmes.

Dim ErstSpalt As Long, LetzteSpalt As Long
Dim SemNr As String, Semtitel As String, i As Integer, a As
Integer

dim neueSpalte as integer, ident as boolean

das ist soweit klar

ErstSpalt = Sheets(„Plan 1“).Cells(1, 2).Value
LetzteSpalt = Sheets(„Plan 1“).Cells(1, 3).Value

Ich habe 2 Werte in Zellen die meinen Start- und Endpunkt abgrenzen. Hier z.B. 6 und 30

neueSpalte = ErstSpalt

Das war deins

For i = ErstSpalt To LetzteSpalt
a = i - 4

Am Anfang der Schleife ist i=6. In meiner anderen Arbeitsmappe ist der Startpunkt 2, also a = i - 4.
Die Ausgangsmappe liest die Daten von oben nach unten ein, die Zielmappe schreibt die Daten von links nach rechts.

if a

Hallo,

Also jetzt werde ich wirklich neugierig. Ich habe deinen ursprünglichen Code folgendermassen verstanden:

Dim ErstSpalt As Long, LetzteSpalt As Long
Dim SemNr As String, Semtitel As String, i As Integer, a As
Integer

ErstSpalt = Sheets(„Plan 1“).Cells(1, 2).Value
LetzteSpalt = Sheets(„Plan 1“).Cells(1, 3).Value

For i = ErstSpalt To LetzteSpalt
a = i - 4

Sheets(„Plan 1“).Cells(8, i).Value =
Left(Sheets(„Statistik“).Cells(a, 6).Value, 4)
Sheets(„Plan 1“).Cells(7, i).Value =
Sheets(„Statistik“).Cells(a, 7).Value

Mit dieser Zuweisung stellst du
im Arbeitsblatt „Plan 1“ in die Zeile 8 den Wert aus „Statistik“ der Spalte 6 bzw.
im Arbeitsblatt „Plan 1“ in die Zeile 7 den Wert aus „Statistik“ der Spalte 7.
Damit konvertierst du die Matrix und beginnst im Arbeitsblatt „Plan 1“ in Spalte 6 mit den Einträgen.
Außerdem beginnst du im Arbeitsblatt „Statistik“ erst in Zeile 2 zu lesen - ist die erste Zeile eine Überschriftszeile?

Next i
End Sub

Ausser dass mir die Matrixkonvertierung etwas seltsam vorkam (Zeilen und Spalten vertauschen), funktioniert das Programm bei mir. Was macht das Programm denn bei dir? Beschreib mir doch mal die Reaktion des Programms.

Sicherheitshalber kopiere ich dir jetzt nochmals den ganzen Code in komprimierter Form herein:

Dim ErstSpalt As Long, LetzteSpalt As Long
Dim SemNr As String, Semtitel As String, i As Integer, a As Integer
Dim neueSpalte As Integer, ident As Boolean

ErstSpalt = Sheets(„Plan 1“).Cells(1, 2).Value
LetzteSpalt = Sheets(„Plan 1“).Cells(1, 3).Value

neueSpalte = ErstSpalt
For i = ErstSpalt To LetzteSpalt
a = i - 4
If a

Hallo,

Mit dieser Zuweisung stellst du
im Arbeitsblatt „Plan 1“ in die Zeile 8 den Wert aus
„Statistik“ der Spalte 6 bzw.
im Arbeitsblatt „Plan 1“ in die Zeile 7 den Wert aus
„Statistik“ der Spalte 7.
Damit konvertierst du die Matrix und beginnst im Arbeitsblatt
„Plan 1“ in Spalte 6 mit den Einträgen.
Außerdem beginnst du im Arbeitsblatt „Statistik“ erst in Zeile
2 zu lesen - ist die erste Zeile eine Überschriftszeile?

Du hast alles richtig angenommen und ja, die erste Zeile beim Arbeitsblatt „Statistik“ ist eine Überschriftszeile.

Ausser dass mir die Matrixkonvertierung etwas seltsam vorkam
(Zeilen und Spalten vertauschen), funktioniert das Programm
bei mir. Was macht das Programm denn bei dir? Beschreib mir
doch mal die Reaktion des Programms.

Also bei mir funktioniert das Programm insofern, dass die Daten alle richtig transformiert und in „Plan 1“ übertragen werden.

Und… Oh jetzt habe ich das Problem. Das Sub Programm rufe ich mit einem anderen Programm auf… tja man sollte schon die gleichen Namen für den Call nehmen. Der Verweiß geht noch auf mein altes Programm… Peinlich!

Aber eine Frage habe ich. Das Programm bekommt 24 Spalten für den Übertrag. 30-6=24.

Wenn jetzt Redundanzen auftauchen reduzieren sich die freien Spalten um jeweils -1. Wie kann ich verhindern, dass das Programm nach 20 Spalten aufhört zu übertragen, sondern die Werte 6 bis 30 verwendet und voll ausreizt.

Gruß

Sven

Hallo,

freut mich, dass das Programm nun doch funktioniert - und dein Fehler ist mir auch schon oft genug passiert.

Aber eine Frage habe ich. Das Programm bekommt 24 Spalten für
den Übertrag. 30-6=24.

Wenn jetzt Redundanzen auftauchen reduzieren sich die freien
Spalten um jeweils -1. Wie kann ich verhindern, dass das
Programm nach 20 Spalten aufhört zu übertragen, sondern die
Werte 6 bis 30 verwendet und voll ausreizt.

Wenn du meine neue Variable „neueSpalte“ durch deinen Zähler „i“ ersetzt, dann bleiben dir die hoffentlich gewünschten Lücken übrig - also die Zuweisung so wie du sie ursprünglich hattest. Ich hatte geglaubt, dass du die Spalten auch komprimieren möchtest. Nimm aber die Initialisierung und das Hochzählen meiner Variablen heraus.

lg Maria

Hallo Maria,

Wenn du meine neue Variable „neueSpalte“ durch deinen Zähler
„i“ ersetzt, dann bleiben dir die hoffentlich gewünschten
Lücken übrig - also die Zuweisung so wie du sie ursprünglich
hattest. Ich hatte geglaubt, dass du die Spalten auch
komprimieren möchtest. Nimm aber die Initialisierung und das
Hochzählen meiner Variablen heraus.

Das habe ich jetzt ausprobiert. Das ist aber nicht ganz das was ich möchte.

Bisher nimmt ja das Programm 24 Daten aus meiner Datei. Dort sind aber einige doppelt. jetzt möchte ich, dass er die Tabelle einfach weiter runterläuft und die Tabelle auffüllt bis 24 erreicht sind.

Deine erste Version holt sich 24 Daten aus der Tabelle und schaut, ob Redundanzen vorhanden sind und läßt diese einfach weg.
Ich möchte aber, das er für jedes weggelassene Datum eine weitere Zelle von den 24 anhängt und diese übernimmt. Bis ich bei „Plan 1“ die 24 Felder ausgefüllt habe.

Ich hoffe du konntest mir folgen.

LG

Sven

Hallo,

tut mir leid, dass ich bisher dein Problem so schlecht verstanden hatte, aber aus der Ferne sind halt Diagnosen nicht nur in der Medizin problematisch. Trotzdem starte ich den nächsten Versuch:

Dim ErstSpalt As Long, LetzteSpalt As Long
Dim SemNr As String, Semtitel As String, i As Integer, a As Integer
Dim neueSpalte As Integer, ident As Boolean

ErstSpalt = Sheets(„Plan 1“).Cells(1, 2).Value
LetzteSpalt = Sheets(„Plan 1“).Cells(1, 3).Value

neueSpalte = ErstSpalt
i = ErstSpalt
While neueSpalte

Hallo Maria,

deine Diagnose war, im Gegensatz zu einigen Ärzten, goldrichtig. Jetzt funktioniert alles wie es soll.

Vielen lieben Dank nochmal für die tolle Hilfe!

Gruß

Sven