Supportnet / Forum / Tabellenkalkulation
6 Stellen Gliedern
Frage
Hallo Liebe Leute!
Ich steh mal wieder voll auf der Leitung!
Ich habe eine 6-Stellige Zahl (Konten) die ich Gliedern möchte!
Dies soll wie folgt aussehen:
Sp1 Sp2 Sp3 Sp4 Sp5
5 Bezeichnung
51 Bezeichnung
513 Bezeichnung
513650 Bezeichnung(Ursprung)
Hat hierzu jemand eine praktikable Lösung?
Über Verketten möchte ich dann in einer Spalte nur einen Wert haben und dann die entsprechende Bezeichnung mit einem "SVWeis" zuordnen.
Vielen Dank im Voraus!
Antwort 1 von Saarbauer
Hallo,
nicht ganz verständlich wie du schreibst
vielleicht etwas besser erläutern, kommt vielleicht auch durch die verschobene Darstellung
Gruß
Helmut
nicht ganz verständlich wie du schreibst
Zitat:
Über Verketten möchte ich dann in einer Spalte nur einen Wert haben und dann die entsprechende Bezeichnung mit einem "SVWeis" zuordnen
Über Verketten möchte ich dann in einer Spalte nur einen Wert haben und dann die entsprechende Bezeichnung mit einem "SVWeis" zuordnen
vielleicht etwas besser erläutern, kommt vielleicht auch durch die verschobene Darstellung
Gruß
Helmut
Antwort 2 von Platin7
Morgen!
Man sollte sich die Vorschau mal anschauen...
Also auf ein Neues:
Spalte 1 Zeile 1: 5
Spalte 2 Zeile 2: 51
Spalte 3 Zeile 3: 513
Spalte 4 Zeile 4: 513650 (Ursprung)
Spalte 1 Zeile 5: 6
Spalte 2 Zeile 6: 62
Spalte 3 Zeile 7: 621
Spalte 4 Zeile 8: 621350 (Ursprung)
Spalte 5: jeweils die Bezeichnung
Die Ursprungsnummer ist die, die vorgegeben ist und aus der der Rest entstehen soll.
Ich hoffe, ich habe mich diesmal verständlicher ausgedrückt!
Gruss
Platin7
Man sollte sich die Vorschau mal anschauen...
Also auf ein Neues:
Spalte 1 Zeile 1: 5
Spalte 2 Zeile 2: 51
Spalte 3 Zeile 3: 513
Spalte 4 Zeile 4: 513650 (Ursprung)
Spalte 1 Zeile 5: 6
Spalte 2 Zeile 6: 62
Spalte 3 Zeile 7: 621
Spalte 4 Zeile 8: 621350 (Ursprung)
Spalte 5: jeweils die Bezeichnung
Die Ursprungsnummer ist die, die vorgegeben ist und aus der der Rest entstehen soll.
Ich hoffe, ich habe mich diesmal verständlicher ausgedrückt!
Gruss
Platin7
Antwort 3 von Aliba
Hi Platin7,
in A1 die Formel: =LINKS(D4;1)
in B3 die Formel:=LINKS(D4;2)
in C3 die Formel:=LINKS(D4;3)
CU Aliba
in A1 die Formel: =LINKS(D4;1)
in B3 die Formel:=LINKS(D4;2)
in C3 die Formel:=LINKS(D4;3)
CU Aliba
Antwort 4 von Platin7
Hallo Aliba!
Prima, aber das weitere Problem ist, das an den entsprechenden Stellen neue Zeilen eingefügt werden sollen!
Ergebnis:
Spalte 1 Zeile 1: 5
Spalte 2 Zeile 2: 51
Spalte 3 Zeile 3: 513
Spalte 4 Zeile 4: 513650 (Ursprung)
Spalte 1 Zeile 5: 6
Spalte 2 Zeile 6: 62
Spalte 3 Zeile 7: 621
Spalte 4 Zeile 8: 621350 (Ursprung
Basis:
Spalte 4 Zeile 9: 631350
Spalte 4 Zeile 10: 751420
Spalte 4 Zeile 11: 751433
Ich benötige also auch neue Zeilen daszwischen!
Danke trotzdem!
Prima, aber das weitere Problem ist, das an den entsprechenden Stellen neue Zeilen eingefügt werden sollen!
Ergebnis:
Spalte 1 Zeile 1: 5
Spalte 2 Zeile 2: 51
Spalte 3 Zeile 3: 513
Spalte 4 Zeile 4: 513650 (Ursprung)
Spalte 1 Zeile 5: 6
Spalte 2 Zeile 6: 62
Spalte 3 Zeile 7: 621
Spalte 4 Zeile 8: 621350 (Ursprung
Basis:
Spalte 4 Zeile 9: 631350
Spalte 4 Zeile 10: 751420
Spalte 4 Zeile 11: 751433
Ich benötige also auch neue Zeilen daszwischen!
Danke trotzdem!
Antwort 5 von JoeKe
Hallo,
versuch es mal mit folgenden VBA-Code:
Option Explicit
Sub Gliederung()
Dim loZeile As Long, loLetzte As Long, rng As Range
Application.ScreenUpdating = False
loZeile = 1
Do
Rows(loZeile & ":" & loZeile + 2).Insert Shift:=xlDown
loZeile = loZeile + 4
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 4)), Cells(Rows.Count, 4) _
.End(xlUp).Row, Rows.Count)
Loop While loZeile <= loLetzte
For Each rng In Range(Cells(1, 4), Cells(loLetzte, 4))
If rng <> "" Then
Cells(rng.Row - 3, 1) = Left(rng, 1)
Cells(rng.Row - 2, 2) = Left(rng, 2)
Cells(rng.Row - 1, 3) = Left(rng, 3)
End If
Next
Application.ScreenUpdating = True
End Sub
Gruß
JöKe
versuch es mal mit folgenden VBA-Code:
Option Explicit
Sub Gliederung()
Dim loZeile As Long, loLetzte As Long, rng As Range
Application.ScreenUpdating = False
loZeile = 1
Do
Rows(loZeile & ":" & loZeile + 2).Insert Shift:=xlDown
loZeile = loZeile + 4
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 4)), Cells(Rows.Count, 4) _
.End(xlUp).Row, Rows.Count)
Loop While loZeile <= loLetzte
For Each rng In Range(Cells(1, 4), Cells(loLetzte, 4))
If rng <> "" Then
Cells(rng.Row - 3, 1) = Left(rng, 1)
Cells(rng.Row - 2, 2) = Left(rng, 2)
Cells(rng.Row - 1, 3) = Left(rng, 3)
End If
Next
Application.ScreenUpdating = True
End Sub
Gruß
JöKe
Antwort 6 von Platin7
Hallo JöKe!
Du bist der Held!!!
Klappt prima!
Hat man so was in der Schublade liegen, oder machst Du das mal eben auf die Schnelle?
Vielen Dank auf jedenfall!
Platin7
Du bist der Held!!!
Klappt prima!
Hat man so was in der Schublade liegen, oder machst Du das mal eben auf die Schnelle?
Vielen Dank auf jedenfall!
Platin7
Antwort 7 von JoeKe
Hallo Platin,
sowohl als auch. ;-)
Und vielen Dank für die Rückmeldung.
Gruß
JöKe
sowohl als auch. ;-)
Und vielen Dank für die Rückmeldung.
Gruß
JöKe
Antwort 8 von Platin7
Hallo JöKe!
Es hat sich in der Zwischenzeit noch ein kleines Problem ergeben.
Bei Deiner Methode bekomme ich für jedes Konto die Hierachie! Ich bräuchte die Stufen aber eigentlich nur jeweils einmal. Der Rest, also die dazugehörigen Konten der Stufen sollten einfach angehängt werden.
Würg!!! Das ist echt schwer in Worte zu fassen!
Vielleicht fällt Dir dazu ja noch was ein!
Gruss
Platin7
Es hat sich in der Zwischenzeit noch ein kleines Problem ergeben.
Bei Deiner Methode bekomme ich für jedes Konto die Hierachie! Ich bräuchte die Stufen aber eigentlich nur jeweils einmal. Der Rest, also die dazugehörigen Konten der Stufen sollten einfach angehängt werden.
Würg!!! Das ist echt schwer in Worte zu fassen!
Vielleicht fällt Dir dazu ja noch was ein!
Gruss
Platin7
Antwort 9 von JoeKe
Hallo Platin7,
sollte mit folgenden Code funktionieren:
Sub GliederungII()
Dim loZähler As Long, loLetzte As Long, i As Long
Application.ScreenUpdating = False
loZähler = 1
Do
If Left(cells(loZähler, 4), 3) = Left(cells(loZähler + 1, 4), 3) Then
loZähler = loZähler + 1
ElseIf Left(cells(loZähler, 4), 3) <> Left(cells(loZähler + 1, 4), 3) Then
Rows(loZähler + 1 & ":" & loZähler + 3).Insert Shift:=xlDown
loZähler = loZähler + 4
End If
loLetzte = IIf(IsEmpty(cells(Rows.Count, 4)), cells(Rows.Count, 4) _
.End(xlUp).Row, Rows.Count)
Loop While loZähler <= loLetzte
i = 4
Do
If cells(i, 4) <> "" And cells(i - 1, 4) = "" Then
cells(i - 3, 1) = Left(cells(i, 4), 1)
cells(i - 2, 2) = Left(cells(i, 4), 2)
cells(i - 1, 3) = Left(cells(i, 4), 3)
End If
i = i + 1
Loop While i <= loLetzte
Application.ScreenUpdating = True
End Sub
Hierbei habe ich allerdings angenommen, dass die Konten erst ab der zweiten Zeile eingetragen wurden und sie sortiert sind.
Gruß
JöKe
sollte mit folgenden Code funktionieren:
Sub GliederungII()
Dim loZähler As Long, loLetzte As Long, i As Long
Application.ScreenUpdating = False
loZähler = 1
Do
If Left(cells(loZähler, 4), 3) = Left(cells(loZähler + 1, 4), 3) Then
loZähler = loZähler + 1
ElseIf Left(cells(loZähler, 4), 3) <> Left(cells(loZähler + 1, 4), 3) Then
Rows(loZähler + 1 & ":" & loZähler + 3).Insert Shift:=xlDown
loZähler = loZähler + 4
End If
loLetzte = IIf(IsEmpty(cells(Rows.Count, 4)), cells(Rows.Count, 4) _
.End(xlUp).Row, Rows.Count)
Loop While loZähler <= loLetzte
i = 4
Do
If cells(i, 4) <> "" And cells(i - 1, 4) = "" Then
cells(i - 3, 1) = Left(cells(i, 4), 1)
cells(i - 2, 2) = Left(cells(i, 4), 2)
cells(i - 1, 3) = Left(cells(i, 4), 3)
End If
i = i + 1
Loop While i <= loLetzte
Application.ScreenUpdating = True
End Sub
Hierbei habe ich allerdings angenommen, dass die Konten erst ab der zweiten Zeile eingetragen wurden und sie sortiert sind.
Gruß
JöKe
Antwort 10 von Platin7
Hallo Jöke!
Wir sind ganz nah dran!!!
Auf der Ebene der Spalte 3 ist es schon richtig!
Nun noch auf der ersten und zweiten Ebene.
Ich würde den Code aber auch ganz gern verstehen um ihn dann auf meine Bedürfnisse abzuwandeln.
Man weiß ja nie, wozu man das noch mal brauchen kann! Vielleicht kannst Du ein paar Kommentare einfügen.
Lieben Gruss
Platin7
Wir sind ganz nah dran!!!
Auf der Ebene der Spalte 3 ist es schon richtig!
Nun noch auf der ersten und zweiten Ebene.
Ich würde den Code aber auch ganz gern verstehen um ihn dann auf meine Bedürfnisse abzuwandeln.
Man weiß ja nie, wozu man das noch mal brauchen kann! Vielleicht kannst Du ein paar Kommentare einfügen.
Lieben Gruss
Platin7
Antwort 11 von JoeKe
Hallo Platin,
hier ersteinmal der kommentierte Code:
Sub GliederungII()
Dim loZähler As Long, loLetzte As Long, i As Long
Application.ScreenUpdating = False
Rem bestimmt die Zeile in der die Überprüfung beginnt
loZähler = 1
Do
Rem Überprüfung ob die linken 3 Zahlen in aufeinanderfolgenden Zeilen gleich ist
Rem Cells(loZähler,4) entspricht der Zellen in Spalte D
If Left(cells(loZähler, 4), 3) = Left(cells(loZähler + 1, 4), 3) Then
Rem wenn die beiden Werte gleich sind wird der Zeilenzähler um 1 erhöht
loZähler = loZähler + 1
ElseIf Left(cells(loZähler, 4), 3) <> Left(cells(loZähler + 1, 4), 3) Then
Rem wenn die beiden Werte ungleich sind werden vor der entsprechenden Zeile
Rem 3 Zeilen eingefügt
Rows(loZähler + 1 & ":" & loZähler + 3).Insert Shift:=xlDown
Rem und der Zeilenzähler um 4 (1 für den nächsten Wert und 3 für die Leerzeilen erhöht
loZähler = loZähler + 4
End If
Rem die letzte belegte Zelle in Spalte D wird ermittelt
loLetzte = IIf(IsEmpty(cells(Rows.Count, 4)), cells(Rows.Count, 4) _
.End(xlUp).Row, Rows.Count)
Rem legtfest, dass das vorhergehende wiederholt wird, bis die letzte Zeile erreicht ist
Loop While loZähler <= loLetzte
Rem bestimmt die Zeile in der die Überprüfung beginnt
i = 2
Do
Rem wenn in Spalte D (4) eine Zelle nicht leer und die vorrige leer ist
If cells(i, 4) <> "" And cells(i - 1, 4) = "" Then
Rem dann wird in Spalte A (1) drei Zeilen höher die linke Zahl eingetragen
cells(i - 3, 1) = Left(cells(i, 4), 1)
Rem dann wird in Spalte B (2) zwei Zeilen höher die linke 2 Zahlen eingetragen
cells(i - 2, 2) = Left(cells(i, 4), 2)
Rem dann wird in Spalte C (3) eine Zeile höher die linke 3 Zahlen eingetragen
cells(i - 1, 3) = Left(cells(i, 4), 3)
End If
Rem zeilenzähler wird um 1 erhöht
i = i + 1
Rem Festlegung der Schleifen durchläufe
Loop While i <= loLetzte
Application.ScreenUpdating = True
End Sub
Gruß
hier ersteinmal der kommentierte Code:
Sub GliederungII()
Dim loZähler As Long, loLetzte As Long, i As Long
Application.ScreenUpdating = False
Rem bestimmt die Zeile in der die Überprüfung beginnt
loZähler = 1
Do
Rem Überprüfung ob die linken 3 Zahlen in aufeinanderfolgenden Zeilen gleich ist
Rem Cells(loZähler,4) entspricht der Zellen in Spalte D
If Left(cells(loZähler, 4), 3) = Left(cells(loZähler + 1, 4), 3) Then
Rem wenn die beiden Werte gleich sind wird der Zeilenzähler um 1 erhöht
loZähler = loZähler + 1
ElseIf Left(cells(loZähler, 4), 3) <> Left(cells(loZähler + 1, 4), 3) Then
Rem wenn die beiden Werte ungleich sind werden vor der entsprechenden Zeile
Rem 3 Zeilen eingefügt
Rows(loZähler + 1 & ":" & loZähler + 3).Insert Shift:=xlDown
Rem und der Zeilenzähler um 4 (1 für den nächsten Wert und 3 für die Leerzeilen erhöht
loZähler = loZähler + 4
End If
Rem die letzte belegte Zelle in Spalte D wird ermittelt
loLetzte = IIf(IsEmpty(cells(Rows.Count, 4)), cells(Rows.Count, 4) _
.End(xlUp).Row, Rows.Count)
Rem legtfest, dass das vorhergehende wiederholt wird, bis die letzte Zeile erreicht ist
Loop While loZähler <= loLetzte
Rem bestimmt die Zeile in der die Überprüfung beginnt
i = 2
Do
Rem wenn in Spalte D (4) eine Zelle nicht leer und die vorrige leer ist
If cells(i, 4) <> "" And cells(i - 1, 4) = "" Then
Rem dann wird in Spalte A (1) drei Zeilen höher die linke Zahl eingetragen
cells(i - 3, 1) = Left(cells(i, 4), 1)
Rem dann wird in Spalte B (2) zwei Zeilen höher die linke 2 Zahlen eingetragen
cells(i - 2, 2) = Left(cells(i, 4), 2)
Rem dann wird in Spalte C (3) eine Zeile höher die linke 3 Zahlen eingetragen
cells(i - 1, 3) = Left(cells(i, 4), 3)
End If
Rem zeilenzähler wird um 1 erhöht
i = i + 1
Rem Festlegung der Schleifen durchläufe
Loop While i <= loLetzte
Application.ScreenUpdating = True
End Sub
Gruß
Antwort 12 von JoeKe
Wenn du nicht weiter kommst, melde dich nochmal und beschreib mal was noch nicht so ist wie es sein soll.
Antwort 13 von Platin7
Hallo JöKe!
Danke für die Beschreibung!
Aber das noch vorhandene Problem kann darau noch nicht ableiten!
Ich bekomme folgende Ergebnisse (Zeilenunterschiede habe ich hier nicht berücksichtigt, sind aber i.O.)
5---50---500---500100
5---50---501---501100 50 zu viel
5---51---510---510110 5 zu viel
Ich hoffe es wird deutlich!
Lieben Gruss
Platin7
Danke für die Beschreibung!
Aber das noch vorhandene Problem kann darau noch nicht ableiten!
Ich bekomme folgende Ergebnisse (Zeilenunterschiede habe ich hier nicht berücksichtigt, sind aber i.O.)
5---50---500---500100
5---50---501---501100 50 zu viel
5---51---510---510110 5 zu viel
Ich hoffe es wird deutlich!
Lieben Gruss
Platin7
Antwort 14 von JoeKe
Moin Platin,
ich habe dir hier mal meine Beispieldatei eingestellt.
In der funktioniert es so wie ich es bis jetzt verstanden habe.
Sieh sie dir mal an und lade dann bei netupload nötigenfalls eine Datei mit einem Beispiel was anderst sein soll hoch.
Gruß
JöKe
ich habe dir hier mal meine Beispieldatei eingestellt.
In der funktioniert es so wie ich es bis jetzt verstanden habe.
Sieh sie dir mal an und lade dann bei netupload nötigenfalls eine Datei mit einem Beispiel was anderst sein soll hoch.
Gruß
JöKe
Antwort 15 von Platin7
Hi!
Ja, so sieht das bei mir auch aus!
Ich möchte in der kompletteb ersten Spalte nur einmal die 1 haben und in der kompletten zweiten Spalte nur einmal die 14!
Gruss
Platin7
Ja, so sieht das bei mir auch aus!
Ich möchte in der kompletteb ersten Spalte nur einmal die 1 haben und in der kompletten zweiten Spalte nur einmal die 14!
Gruss
Platin7
Antwort 16 von JoeKe
Hallo,
passiert bei dir etwas anderes als bei mir.
Hier kannst du sehen wie bei mir das Ergebnis aussieht.
Gruß
JöKe
passiert bei dir etwas anderes als bei mir.
Hier kannst du sehen wie bei mir das Ergebnis aussieht.
Gruß
JöKe
Antwort 17 von CaroS
Hallo Platin7,
dieser Code sollte ungefähr das machen, was Du willst. Er ist auch ziemlich einfach gestrickt, also leicht nachvollziehbar.
Sub Gliederung_3()
Dim g1 As Integer, g2 As Integer, g3 As Integer, s As Byte, w As Long, bis_zeile As Long, z As Long
Rem --- Voreinstellungen ---
Const spalte As String = "D"
Const von_zeile As Long = 2
Rem --- Voreinstellungen ---
s = Asc(UCase(spalte)) - 64
bis_zeile = IIf(IsEmpty(ActiveSheet.Cells(Rows.Count, 4)), ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row, Rows.Count)
Application.ScreenUpdating = False
z = von_zeile: g1 = 0: g2 = 0: g3 = 0
Do
w = ActiveSheet.Cells(z, s).Value
If Left(w, 1) <> g1 Then
Rem neue Gliederungsebene 1
Rows(z).EntireRow.Insert Shift:=xlDown
ActiveSheet.Cells(z, 1).Value = Left(w, 1)
g1 = Left(w, 1)
z = z + 1
bis_zeile = bis_zeile + 1
End If
If Left(w, 2) <> g2 Then
Rem neue Gliederungsebene 2
Rows(z).EntireRow.Insert Shift:=xlDown
ActiveSheet.Cells(z, 2).Value = Left(w, 2)
g2 = Left(w, 2)
z = z + 1
bis_zeile = bis_zeile + 1
End If
If Left(w, 3) <> g3 Then
Rem neue Gliederungsebene 3
Rows(z).EntireRow.Insert Shift:=xlDown
ActiveSheet.Cells(z, 3).Value = Left(w, 3)
g3 = Left(w, 3)
z = z + 1
bis_zeile = bis_zeile + 1
End If
Rem Wert in Spalte D bleibt wie er ist
z = z + 1
Loop Until z > bis_zeile
Application.ScreenUpdating = True
End Sub
Eine Schleife läuft von von_zeile (Voreinstellung, oben) bis bis_zeile (ermittelt aus letzter gefüllter Zelle in Spalte spalte (Voreinstellung, oben). Die aktuellen Gliederungsbezeichnungen werden in g1, g2 und g3 gemerkt und der Reihe nach mit der ersten, den beiden ersten und den drei ersten Stellen des Wertes in jeder Zeile verglichen. Stellt sich bei einem Vergleich heraus, dass die Gliederung nicht übereinstimmt, d. h. eine neue "begonnen" werden muss, wird eine Zeile eingefügt, die neue Gliederung in A, B bzw. C eingetragen, in g1, g2 bzw. g3 gemerkt, die Zeilenzähler z und biszeile werden eins hochgezählt und dann gehts zur nächsten Zeile: z = z + 1. Falls alle Gliederungen richtig waren, passiert gar nichts (- d. h. die Anweisungen aller drei IFs werden nicht ausgeführt), es wird nur zur nächsten Zeile gegangen (z = z + 1). Die Werte in D bleiben in jedem Fall völlig unverändert.
Gruß,
CaroS
dieser Code sollte ungefähr das machen, was Du willst. Er ist auch ziemlich einfach gestrickt, also leicht nachvollziehbar.
Sub Gliederung_3()
Dim g1 As Integer, g2 As Integer, g3 As Integer, s As Byte, w As Long, bis_zeile As Long, z As Long
Rem --- Voreinstellungen ---
Const spalte As String = "D"
Const von_zeile As Long = 2
Rem --- Voreinstellungen ---
s = Asc(UCase(spalte)) - 64
bis_zeile = IIf(IsEmpty(ActiveSheet.Cells(Rows.Count, 4)), ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row, Rows.Count)
Application.ScreenUpdating = False
z = von_zeile: g1 = 0: g2 = 0: g3 = 0
Do
w = ActiveSheet.Cells(z, s).Value
If Left(w, 1) <> g1 Then
Rem neue Gliederungsebene 1
Rows(z).EntireRow.Insert Shift:=xlDown
ActiveSheet.Cells(z, 1).Value = Left(w, 1)
g1 = Left(w, 1)
z = z + 1
bis_zeile = bis_zeile + 1
End If
If Left(w, 2) <> g2 Then
Rem neue Gliederungsebene 2
Rows(z).EntireRow.Insert Shift:=xlDown
ActiveSheet.Cells(z, 2).Value = Left(w, 2)
g2 = Left(w, 2)
z = z + 1
bis_zeile = bis_zeile + 1
End If
If Left(w, 3) <> g3 Then
Rem neue Gliederungsebene 3
Rows(z).EntireRow.Insert Shift:=xlDown
ActiveSheet.Cells(z, 3).Value = Left(w, 3)
g3 = Left(w, 3)
z = z + 1
bis_zeile = bis_zeile + 1
End If
Rem Wert in Spalte D bleibt wie er ist
z = z + 1
Loop Until z > bis_zeile
Application.ScreenUpdating = True
End Sub
Eine Schleife läuft von von_zeile (Voreinstellung, oben) bis bis_zeile (ermittelt aus letzter gefüllter Zelle in Spalte spalte (Voreinstellung, oben). Die aktuellen Gliederungsbezeichnungen werden in g1, g2 und g3 gemerkt und der Reihe nach mit der ersten, den beiden ersten und den drei ersten Stellen des Wertes in jeder Zeile verglichen. Stellt sich bei einem Vergleich heraus, dass die Gliederung nicht übereinstimmt, d. h. eine neue "begonnen" werden muss, wird eine Zeile eingefügt, die neue Gliederung in A, B bzw. C eingetragen, in g1, g2 bzw. g3 gemerkt, die Zeilenzähler z und biszeile werden eins hochgezählt und dann gehts zur nächsten Zeile: z = z + 1. Falls alle Gliederungen richtig waren, passiert gar nichts (- d. h. die Anweisungen aller drei IFs werden nicht ausgeführt), es wird nur zur nächsten Zeile gegangen (z = z + 1). Die Werte in D bleiben in jedem Fall völlig unverändert.
Gruß,
CaroS
Antwort 18 von CaroS
Hallo JöKe,
ich glaube, ich weiß, worum es geht. Ändere mal die Testdaten ein bisschen. Für diese hier zum Beispiel sollen die Gleiderungsstufen 1, 14 und 2 jeweils nur beim ersten Auftreten eingetragen werden, die 14 aber nicht beim Wechsel von 141 auf 142 und auf 143. Das gewünschte Ergebnis wie ich es verstanden habe, steht darunter.
Gruß,
CaroS
ich glaube, ich weiß, worum es geht. Ändere mal die Testdaten ein bisschen. Für diese hier zum Beispiel sollen die Gleiderungsstufen 1, 14 und 2 jeweils nur beim ersten Auftreten eingetragen werden, die 14 aber nicht beim Wechsel von 141 auf 142 und auf 143. Das gewünschte Ergebnis wie ich es verstanden habe, steht darunter.
Konten (Spalte D)
141222
141223
141224
142345
143456
156780
156789
231223
231224
234567
234568
345222
345223
345224
1
14
141
141222
141223
141224
142
142345
143
143456
15
156
156780
156789
2
23
231
231223
231224
234
234567
234568
3
34
345
345222
345223
345224Gruß,
CaroS
Antwort 19 von Platin7
Hallo CaroS!
Prima, Du hast es erfasst!
So habe ich es hier dann auch dargestellt!!!
http://www.netupload.de/detail.php?img=1b0731e5638fde877c854bdefc8e0c20.xls
Gruss
Platin7
Prima, Du hast es erfasst!
So habe ich es hier dann auch dargestellt!!!
http://www.netupload.de/detail.php?img=1b0731e5638fde877c854bdefc8e0c20.xls
Gruss
Platin7
Antwort 20 von JoeKe
@ CaroS,
Gratulation!!
Hab ich nicht erwartet, dass das so gemeint war.
@Platin,
hier sieht man mal wieder :
- Die Hilfe kann nur so gut sein, wie die Frage -
Dennoch du hast eine Lösung.
Bis zum nächsten Problem. ;-)
JöKe
Gratulation!!
Hab ich nicht erwartet, dass das so gemeint war.
@Platin,
hier sieht man mal wieder :
- Die Hilfe kann nur so gut sein, wie die Frage -
Dennoch du hast eine Lösung.
Bis zum nächsten Problem. ;-)
JöKe
Antwort 21 von CaroS
Hallo allerseits,
freut mich, dass ich helfen konnte. Man kann´s ja nicht oft genug wiederholen, dass man verständliche Problembeschreibungen, den aktuellen Stand der Datei und/oder ein aussagekräftiges Beispiel braucht, um vernünftig helfen zu können. Der kleine, aber wesentliche Unterschied war, dass in der ersten Beispieldatei eben leider nicht deutlich zum Ausdruck kam, dass es mehrere untergeordnete Gleiderungsstufen geben kann und dass die höheren Gleiderungsstufen dann jeweils nur einmal aufgeführt werden sollen. Wäre das Beispiel gleich so von Platin gekommen, wäre von Anfang an alles klar gewesen. Ja, so ist das eben.
Auf zum nächsten! Man sieht (liest) sich.
Grüße,
CaroS
freut mich, dass ich helfen konnte. Man kann´s ja nicht oft genug wiederholen, dass man verständliche Problembeschreibungen, den aktuellen Stand der Datei und/oder ein aussagekräftiges Beispiel braucht, um vernünftig helfen zu können. Der kleine, aber wesentliche Unterschied war, dass in der ersten Beispieldatei eben leider nicht deutlich zum Ausdruck kam, dass es mehrere untergeordnete Gleiderungsstufen geben kann und dass die höheren Gleiderungsstufen dann jeweils nur einmal aufgeführt werden sollen. Wäre das Beispiel gleich so von Platin gekommen, wäre von Anfang an alles klar gewesen. Ja, so ist das eben.
Auf zum nächsten! Man sieht (liest) sich.
Grüße,
CaroS

