Datensätze vereinzeln

27/02/2008 - 20:41 von Roland Krieglstein | Report spam
Ich habe eine Tabelle in der ich die Datensàtze, die in je einer Zeile stehen vereinzeln möchte. Ist das machbar? Ich hànge unten
ein Beispiel an. Die reale Tabelle, die ich bearbeiten möchte hat aber zwischen 1000 und 5000 Datenzeilen. Kann man so etwas
automatisieren?


Ursprüngliche Tabelle:

Art.no Bemerkung Anz. Artikel Fehlerhaft ok
12345 gutes Design 5 2 3
67890 schönere Farbe 4 1 3
22222 kleines Produkt 3 2 1


Dabei gilt: Anz. Artikel = Anzahl der zu schreibenden Datensatzzeilen=Anzahl "fehlerhafter" Prod+Anz. "ok"-Produkte



Aus obiger Tabelle soll nun folgendes gemacht werden:

Art.no Bemerkung Anz. Artikel Fehlerhaft ok
12345 gutes Design 5 1 0
12345 gutes Design 5 1 0
12345 gutes Design 5 0 1
12345 gutes Design 5 0 1
12345 gutes Design 5 0 1
67890 schönere Farbe 4 1 0
67890 schönere Farbe 4 0 1
67890 schönere Farbe 4 0 1
67890 schönere Farbe 4 0 1
22222 kleines Produkt 3 1 0
22222 kleines Produkt 3 1 0
22222 kleines Produkt 3 0 1


Für jedes fehlerhafte Produkt wird eine Zeile geschrieben und für jedes Produkt das ok ist wird eine eigene Zeile geschrieben
Ob das Produkt fehlerhaft oder ok war, wird jeweils mit einer 0 bzw. einer 1 im entsprechenden Feld angegeben.

Ist das mit Excel Bordmitteln möglich?

Vielen Dank


mfG

Roland
 

Lesen sie die antworten

#1 Peter Schleif
27/02/2008 - 22:09 | Warnen spam
Roland Krieglstein schrieb am 27.02.2008 20:41:

Ist das mit Excel Bordmitteln möglich?



Falls Du VBA zu den Boardmitteln zàhlst, siehe unten. Du musst im Code
vielleicht noch ein paar Konstanten anpassen:

Const erste_daten_zeile = 2
Const spalte_artikel_nr = 1
Const spalte_fehler = 4
Const spalte_okay = 5

Ich habe den Code allerdinsg nicht mit 5000 Zeilen gestestet. Könnte
ein paar Sekunden brauchen. Wenn es zu lange dauert, kann man bestimmt
auch noch optimieren.

Peter


Sub vereinzeln()
Dim zeile As Integer
Dim i As Integer
Dim neue_zeilen As Integer
Dim str As String

Const erste_daten_zeile = 2
Const spalte_artikel_nr = 1
Const spalte_fehler = 4
Const spalte_okay = 5

For zeile = Columns(spalte_artikel_nr).End(xlDown).Row _
To erste_daten_zeile Step -1

Application.StatusBar = zeile

neue_zeilen = Cells(zeile, spalte_fehler) _
+ Cells(zeile, spalte_okay) - 1

For i = 1 To neue_zeilen
Rows(zeile + i).Insert
Next

Rows(zeile).Copy
Range((zeile + 1) & ":" & _
(zeile + neue_zeilen)).EntireRow.Select
Paste
Application.CutCopyMode = False

For i = neue_zeilen To 0 Step -1
Cells(zeile + i, spalte_fehler) = _
IIf(i < Cells(zeile, spalte_fehler), 1, 0)

Cells(zeile + i, spalte_okay) = _
1 - Cells(zeile + i, spalte_fehler)
Next

Next

[A2].Select

End Sub

Ähnliche fragen