Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen einfügen mittels best. Zellwerte

Zeilen einfügen mittels best. Zellwerte
04.04.2008 14:37:00
Howard
Hi gEEks!
Ich arbeite grade an einem Projekt welches tausende von Informationen über diverse Reihen/serien sammelt (und auswertet).
Die Ausgangssituation ist wie folgt:
-ich habe Gruppierungen eingeteilt (das Alphabet -damit jeder buchstabe einzeln ausfahrbar ist)
-in jeder Gruppierung gibt es diverse Einträge gewisser Reihen/serien (Jede Reihe hat in Spalte F einen Vermerk wie viele Exemplare es gibt bzw. wie hoch die Anzahl ist)
http://img237.imageshack.us/img237/2592/neuesbildzz3.png
Ein Bild um es verständlich zu machen!
Ziel:
Am ende sollten unter der jeweiligen Reihe/serie so viele Leerzeilen sein wie in der Anzahl vermerkt wurde
Diese automatisch eingefügten Leerzeilen sollten (wenn das mgl. ist) sich gruppieren (mit dem Reihennamen als Hauptzeile).
Das tollste wäre es wenn der titel der Reihe in den darunter stehenden Leerzeilen nummeriert aufgelistet wird.
Ich hoffe es ist nicht zu schwierig!
Danke schon mal fuer eure Hilfe!
Den diese Arbeit nervt wenn mensch es tausende mal stupide nacheinander machen muß!
der Howard

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen einfügen mittels best. Zellwerte
04.04.2008 14:40:33
Renee
Hi Howard,
Bei mir passiert nix, wenn ich auf die Buttons, deines hochgeladenen Programms drücke ;-)
GreetZ Renée

AW: Zeilen einfügen mittels best. Zellwerte
04.04.2008 14:53:00
Howard
Hi Renee,
Hilft es dir trotzdem mir zu helfen? (Schliesslich sollten ja die Knöpfe deines Programms noch Funktionieren)
Oder war dein Post ein wissentliches Missverständniss?
Howard

AW: Zeilen einfügen mittels best. Zellwerte
04.04.2008 15:04:00
Renee
Hi Howard,
Der Post war kein wissentliches Missverständniss, sondern ein unmissverständlicher Sarkasmus.
Lad doch deine Datei hoch. Niemand hat Lust irgendein Bild anzustarren, das Ganze irgendwie in Excel nachzubauen und dir dann irgendwelche, unvollständigen Tips zu geben.
GreetZ Renée

Anzeige
AW: Zeilen einfügen mittels best. Zellwerte
04.04.2008 15:41:06
Howard
Hi Renée,
Hier ist die Datei zum Bild, hoffentlich hilft sie dir und den anderen!
Falls noch mehr grundInfos benötigt werden, bin ich zur stelle!
https://www.herber.de/bbs/user/51271.xls
Ps. hatte das Bild eigentlich nur eingefügt um meine Argumentationen verstaendlicher zu machen. Aber du hast vollkommen recht! Eine Xls.Datei ist wirklich benutzerfreundlicher!
Howard

AW: Zeilen einfügen mittels best. Zellwerte
06.04.2008 11:51:19
fcs
Hallo Howard,
hier mein Lösungsvorschlag
Gruß
Franz

Sub ZeilenEinfuegen()
' Makro am 06.04.08 von fcs erstellt unter Excel 97
Dim objWs As Worksheet
Dim bolRahmen As Boolean
Dim lngZeile As Long
Dim intAnzahl As Integer, intI As Integer
Dim strGruppe As String
Const lngZeileGrp1 As Long = 5    '1. Zeile mit einer Gruppe
Const intSpalteAnz As Integer = 6 'Nummer der Spalte mit der Anzahl
Const intSpalteGrp As Integer = 3 'Nummer der Spalte mit der Gruppe
Const lngFarbe As Long = 4        'ColorIndex, Farbe der eingefügten Zeilen (hellgrün)
'Format der laufenden Nr, die angehängt wird, hier 01, 02 ,03 usw.
Const strFormatNr As String = "00"
Set objWs = Worksheets("Tabelle1")
With objWs
'Alle gruppierten Zeilen der Ebene 2 einblenden
.Outline.ShowLevels RowLevels:=2
Application.ScreenUpdating = False
'Zeilen von unten nach oben abarbeiten
For lngZeile = .Cells(.Rows.Count, intSpalteGrp).End(xlUp).Row To lngZeileGrp1 Step -1
'Prüfen ob in Spalte mit Anzahl eine Zahl eingetragen ist
If Not IsEmpty(.Cells(lngZeile, intSpalteAnz)) _
And IsNumeric(.Cells(lngZeile, intSpalteAnz)) Then
'Prüfen, ob Zeile, vor der eingefügt wird, in Spalte Anzahl leer ist. _
Diese Zeilen haben keine Rahmen und der Rahmen für die eingefügten _
Zeilen muss formatiert werden
If IsEmpty(.Cells(lngZeile + 1, intSpalteAnz)) Then
bolRahmen = True
Else
bolRahmen = False
End If
'Werte für Gruppe und Anzahl merken
strGruppe = .Cells(lngZeile, intSpalteGrp).Value
intAnzahl = .Cells(lngZeile, intSpalteAnz).Value
'Anzahl Leerzeilen einfügen
.Range(.Rows(lngZeile + 1), _
.Rows(lngZeile + intAnzahl)).Insert Shift:=xlShiftDown
'Eingefügte Zeilen formatieren
With .Range(.Rows(lngZeile + 1), .Rows(lngZeile + intAnzahl))
'Füllfarbe  ändern
.Interior.ColorIndex = lngFarbe
'ggf. Rahmen formatieren
If bolRahmen = True Then
.BorderAround LineStyle:=xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
With .Borders
.Weight = xlThin
End With
End If
End With
'Gruppenbezeichnungen durchnummerieren
For intI = 1 To intAnzahl
.Cells(lngZeile + intI, intSpalteGrp).Value = strGruppe _
& Format(intI, strFormatNr)
Next
End If
Next
Application.ScreenUpdating = True
End With
End Sub


Anzeige
AW: Zeilen einfügen mittels best. Zellwerte
06.04.2008 17:48:56
Howard
Hi FCS und andere gEEks,
Ersteinmal ein Riesendanke fuer diesen Macro, er hilft mir sehr viel weiter! =)
Ich habe ein bisschen was veraendert, wie zb. 001 anstatt 01, also nur kleinigkeiten!
die einzigen Sachen die mir noch einfallen, was ich aber nicht hinkriege>>
-das die eingefuegten leerzeilen gruppiert werden
-das bei einem wert von 1 keine leerzeile eingefuegt wird
-(Cool waer es auch wenn die infos aus spalte D & E nach unten kopiert werden ohne aenderung)
https://www.herber.de/bbs/user/51302.xls
Hier ist eine xls direkt aus dem projekt um zu veranschaulichen was ich meine!
der dankbare Howard
MACRO:

Sub ZeilenEinfuegen()
' Makro am 06.04.08 von fcs erstellt unter Excel 97 & bearbeitet von Howard unter Excel 03
Dim objWs As Worksheet
Dim bolRahmen As Boolean
Dim lngZeile As Long
Dim intAnzahl As Integer, intI As Integer
Dim strGruppe As String
Const lngZeileGrp1 As Long = 5    '1. Zeile mit einer Gruppe
Const intSpalteAnz As Integer = 6 'Nummer der Spalte mit der Anzahl
Const intSpalteGrp As Integer = 3 'Nummer der Spalte mit der Gruppe
'Format der laufenden Nr, die angehängt wird, hier 001, 002 ,003 usw.
Const strFormatNr As String = " 000"
Set objWs = Worksheets("Tabelle1")
With objWs
'Alle gruppierten Zeilen der Ebene 2 einblenden
.Outline.ShowLevels RowLevels:=2
Application.ScreenUpdating = False
'Zeilen von unten nach oben abarbeiten
For lngZeile = .Cells(.Rows.Count, intSpalteGrp).End(xlUp).Row To lngZeileGrp1 Step -1
'Prüfen ob in Spalte mit Anzahl eine Zahl eingetragen ist
If Not IsEmpty(.Cells(lngZeile, intSpalteAnz)) _
And IsNumeric(.Cells(lngZeile, intSpalteAnz)) Then
'Prüfen, ob Zeile, vor der eingefügt wird, in Spalte Anzahl leer ist. _
Diese Zeilen haben keine Rahmen und der Rahmen für die eingefügten _
Zeilen muss formatiert werden
If IsEmpty(.Cells(lngZeile + 1, intSpalteAnz)) Then
bolRahmen = True
Else
bolRahmen = False
End If
'Werte für Gruppe und Anzahl merken
strGruppe = .Cells(lngZeile, intSpalteGrp).Value
intAnzahl = .Cells(lngZeile, intSpalteAnz).Value
'Anzahl Leerzeilen einfügen
.Range(.Rows(lngZeile + 1), _
.Rows(lngZeile + intAnzahl)).Insert Shift:=xlShiftDown
'Eingefügte Zeilen formatieren
With .Range(.Rows(lngZeile + 1), .Rows(lngZeile + intAnzahl))
'ggf. Rahmen formatieren
If bolRahmen = True Then
.BorderAround LineStyle:=xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
With .Borders
.Weight = xlThin
End With
End If
End With
'Gruppenbezeichnungen durchnummerieren
For intI = 1 To intAnzahl
.Cells(lngZeile + intI, intSpalteGrp).Value = strGruppe _
& Format(intI, strFormatNr)
Next
End If


Anzeige
AW: Zeilen einfügen mittels best. Zellwerte
06.04.2008 18:54:00
fcs
Hallo Howard,
hier das Makro mit den erforderlichen Anpassungen.
Ich hab auch noch bei den Formatierungen etwas gebastelt, so dass die Rahmen nur in den Spalten C bis J eingefügt werden falls erforderlich und in Spalte C die Zeilen mit den nummerierten Einträgen nicht fett formatiert werden.
Gruß
Franz

Sub ZeilenEinfuegen()
' Makro am 06.04.08 von fcs erstellt unter Excel 97 & bearbeitet von Howard unter Excel 03
Dim objWs As Worksheet
Dim bolRahmen As Boolean
Dim lngZeile As Long
Dim intAnzahl As Integer, intI As Integer
Dim strGruppe As String
Const lngZeileGrp1 As Long = 5    '1. Zeile mit einer Gruppe
Const intSpalteAnz As Integer = 6 'Nummer der Spalte mit der Anzahl
Const intSpalteGrp As Integer = 3 'Nummer der Spalte mit der Gruppe
'Format der laufenden Nr, die angehängt wird, hier 001, 002 ,003 usw.
Const strFormatNr As String = " 000"
Set objWs = Worksheets("Tabelle1")
With objWs
'Alle gruppierten Zeilen der Ebene 2 einblenden
.Outline.ShowLevels RowLevels:=2
Application.ScreenUpdating = False
'Zeilen von unten nach oben abarbeiten
For lngZeile = .Cells(.Rows.Count, intSpalteGrp).End(xlUp).Row To lngZeileGrp1 Step -1
'Prüfen ob in Spalte mit Anzahl eine Zahl eingetragen ist
If Not IsEmpty(.Cells(lngZeile, intSpalteAnz)) _
And IsNumeric(.Cells(lngZeile, intSpalteAnz)) Then
'Prüfen, ob Zeile, vor der eingefügt wird, in Spalte Anzahl leer ist. _
Diese Zeilen haben keine Rahmen und der Rahmen für die eingefügten _
Zeilen muss formatiert werden
If IsEmpty(.Cells(lngZeile + 1, intSpalteAnz)) Then
bolRahmen = True
Else
bolRahmen = False
End If
'Werte für Gruppe und Anzahl merken
strGruppe = .Cells(lngZeile, intSpalteGrp).Value
intAnzahl = .Cells(lngZeile, intSpalteAnz).Value
If intAnzahl > 1 Then
'Anzahl Leerzeilen einfügen
.Range(.Rows(lngZeile + 1), _
.Rows(lngZeile + intAnzahl)).Insert Shift:=xlShiftDown
'Eingefügte Zeilen formatieren und gruppieren
With .Range(.Cells(lngZeile + 1, 3), .Cells(lngZeile + intAnzahl, 10))
'ggf. Rahmen in Spalten C bis J formatieren
If bolRahmen = True Then
.BorderAround LineStyle:=xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
With .Borders
.Weight = xlThin
End With
End If
End With
'Zellen mit nummerierten Gruppen in Spalte C nicht fett
With .Range(.Cells(lngZeile + 1, 3), .Cells(lngZeile + intAnzahl, 3))
.Font.Bold = False
End With
'eingefügte Zeilen gruppieren
With .Range(.Rows(lngZeile + 1), .Rows(lngZeile + intAnzahl))
.Group
End With
'Gruppenbezeichnungen durchnummerieren und Werte aus Spalten D und E übernehmen
For intI = 1 To intAnzahl
.Cells(lngZeile + intI, intSpalteGrp).Value = strGruppe _
& Format(intI, strFormatNr)
.Cells(lngZeile + intI, intSpalteGrp + 1).Value = _
.Cells(lngZeile, intSpalteGrp + 1).Value
.Cells(lngZeile + intI, intSpalteGrp + 2).Value = _
.Cells(lngZeile, intSpalteGrp + 2).Value
Next
End If
End If
Next
Application.ScreenUpdating = True
End With
End Sub


Anzeige
AW: Zeilen einfügen mittels best. Zellwerte
07.04.2008 12:11:00
Howard
hi FCS!
DANKE! DANKE! DANKE! Der Macro erfüllt all meine Wünsche! Das ist echt der totale Hammer!! =)
Damit wird das Projekt um Wochen/Monate verkuerzt!!! =)
Ich haette allerdings noch eine Frage zu folgenden Sachverhalt:
Da ich den Macro von FCS (danke nochmal!) noch nicht die ganze zeit zur verfuegung hatte, habe ich einige Eintraege manuell bearbeitet nun sind aber die infos aus den Spalten D & E nicht mit kopiert worden, da ich zu faul war (das mit nummerieren und gruppieren hat mir gereicht!=).
Ist es moeglich das die infos der spalten d & e solange nach unten kopiert werden bis die leerzeilen enden
(das naechste info beginnt)?
Hier wieder eine *.xls!!
https://www.herber.de/bbs/user/51311.xls
der Howard (ist echt megagluecklich !!)
PS. Franz du bist Klasse!
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige