Excel, Zeilenanzahl/Zeileninhalt aus einem Blatt auf einem anderen Blatt spiegeln

Laszarot

Cadet 2nd Year
Registriert
Apr. 2014
Beiträge
20
Hallo,

Folgende Aufgabe: Ich habe eine Mappe in der ich auf dem ersten Blatt Hersteller, Katalognummer, Beschreibung des Artikels, Preis/Artikel, Menge, Preis/Menge, Versandzeit, Gewicht und Ursprungsland eintrage.

Jetzt möchte ich, dass die Informationen von Blatt 1 in zwei Vorlagen die jeweils in Blatt 2 und Blatt 3 übertragen werden. Da die beiden Kunden diese Informationen auf eine bestimmte Weise präsentiert bekommen wollen, muss ich diese Vorlagen verwenden. Dabei ist dort die Reihenfolge der Informationen unterschiedlich, einer von beiden will die Versandzeit wissen, der andere das Gewicht und die Ursprungsländer.

Natürlich kann ich jetzt eine Vorlage erstellen mit 100 Zeilen für Bestellungen mit je bis zu 100 Produkten und Formeln die sich die Inhalte aus den entsprechenden Zeilen holen. Das habe ich auch schon gemacht und es funktioniert auch.

Aber, ich möchte nicht jedes mal die überschüssigen Zeilen löschen müssen bzw. neue zusätzlich einfügen, wenn es sich verhindern lässt. Die Lösung die mir vorschwebt ist: Man kann per Knopfdruck eine Zeile hinzufügen, mit bestimmten Formeln in den Zellen, die können dann auch aus der Zelle über ihnen kopiert werden mit fortlaufender Zahl und in den beiden anderen Blättern wird ebenfalls eine Zeile hinzugefügt, deren Zellen ebenfalls die Formeln aus den Zellen über ihnen +1 haben.

Ich glaube es ließt sich schwerer als es ist, wenn man es mit der Hand macht, sind es ein paar Handgriffe die in wenigen Sekunden erledigt sind. Aber mein Ziel ist es, möglichst alle Handgriffe des Menschen durch den Computer zu ersetzen.

Ich bin gespannt auf eure Lösungsvorschläge.

Auf Wunsch kann ich natürlich ein Beispiel zur Verfügung stellen.
 
Hi,

dann würde ich mal dein Angebot annehmen und nach einem Beispiel fragen.

Grüße
 
Hi,

Etwas spät, aber im Anhang ist mein Beispiel.

Wenn ich auf dem einen Blatt eine Zeile hinzufüge, weil der Kunde einen weiteren Artikel bestellen möchte, dann soll in dem anderen Blatt die Zeile auch hinzugefügt werden. Am besten wäre es, wenn beide Zeilen dann die Formeln der darüber liegenden Zellen übernehmen würden, nur das der Bezug sich dann um 1 erhöhen muss (A2 statt A1, B2 statt B1, usw.)

Es ist manuell mit kopieren und einfügen leicht möglich, aber die Handgriffe dauern jedes Mal einige Sekunden und sind natürlich eine Fehlerquelle. Deshalb wäre mir eine Automatisierung lieber.

LG,
Laszarot
 

Anhänge

Hi,

also Formelmäßig wird das schwierig. Mit VBA ist das auf jeden Fall zu lösen, aber ich will ehrlich sein:
Der Aufwand der dahintersteckt den Code zu schreiben, und auf alle Eventualitäten anzupassen ist mir persönlich und allen anderen wahrscheinlich zu hoch um diesen kleinen Effekt zu erreichen.

Sorry.

LG
 
Wenn es nur darum geht, eine Zeile einzufügen und die Inhalte/ Formeln aus der darüberliegenden Zelle zu kopieren, kann man dies recht schnell mit einem Button und VBA lösen.
Habe derartiges in meiner Firma auch für Berechnungen eingeführt und das Blatt ansonsten geschützt.
Wenn ich wieder an meinem Platz bin kopiere ich dir mal einen Code rein.

Idee dahinter:
- Lage/ Zelle des gedrückten Buttons finden
- Zeile drunter einfügen
- Inhalte/ Formeln von oben nach unten Kopieren (Zeilen werden automatisch weitergezählt, wenn nicht fest mit $ verankert)
- neue Button (hinzufügen und löschen) in neuer Zeile anlegen

--> Nachteil: auch hier musst du jede (neue) Zeile einzeln hinzufügen bzw. löschen
 
@ConVuzius:
Ok, hab gedacht vielleicht hat ja Excel da was vorgefertigtes, beim Funktionsumfang von diesem Wunderding hätte es mich zumindest nicht überrascht.

@Knufu:
Wäre dir sehr dankbar wenn du den Code posten könntest. Ich habe mit VBA leider noch keine Erfahrung, aber selbst wenn man den Knopf drücken müsste, wäre es sicher eine große Erleichterung für meine Kollegen.

LG,
Laszarot
 
Hallo nachfolgend mein Code, den ich mir "zusammengestelt" habe. Learning bei Doing .. Codeschnipsel ..

Code:
'
' neue Zeile einfügen komplett
'
Sub Zeile_einf()
    Dim LRange, NewName As String
    Dim RowOffset As Integer
    Dim ColumnOffset As Integer
   
    ZeileOffset = 0
    SpalteOffset = 0
   
    Application.ScreenUpdating = False
    blattschutz_aus


   ' Zelle des gedrückten Buttons finden
    LRange = ActiveSheet.Buttons(Application.Caller).TopLeftCell.Address
   
   ' welche Zeile soll kopiert werden
    Rows(Range(LRange).Row - 1).Copy
    ' in welcher Zeile soll eingefügt werden
    Rows(Range(LRange).Row).Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Application.CutCopyMode = False
   
   ' neue Button für neue Zeile erstellen
    Call CreateButton_komplett(LRange)


Ende:
    blattschutz_ein
    Application.ScreenUpdating = True
End Sub


'
' Zeile löschen
'
Sub Zeile_loe()
    Dim LRange, Name As String
    Dim RowOffset As Integer
    Dim ColumnOffset As Integer
   
    ZeileOffset = 0
    SpalteOffset = 0
    
    'Warnmeldungen ausschalten
    Application.DisplayAlerts = False
    blattschutz_aus


   ' Zelle des gedrückten Buttons finden
    LRange = ActiveSheet.Buttons(Application.Caller).TopLeftCell.Address
   
    'Zeile löschen
    Range(LRange).Offset(ZeileOffset, SpalteOffset).EntireRow.Delete
    
    'Warnmeldungen und Blattschutz einschalten
    blattschutz_ein
    Application.DisplayAlerts = True
End Sub




Sub CreateButton_komplett(LRange)
Dim Target As Range


Randomize
    Set Target = Range(LRange)
    With Target
        Set objNeu = ActiveSheet.Buttons.Add(Left:=(Target.Left), Top:=(Target.Top), Width:=14, Height:=14)
            zuffi = Target.Top + Rnd()
            With objNeu
                .PrintObject = False
                .Name = "add-kompl-" & Round(zuffi, 5)
                .Caption = "+"
                .OnAction = "Zeile_einf"
                With .Font
                    .Name = "Calibri"
                    .FontStyle = "Fett"
                    .Size = 8
                End With
            End With
    End With
    Set objNeu = Nothing: Set Target = Nothing


Randomize
    Set Target = Range(LRange)
    With Target
        Set objNeu = ActiveSheet.Buttons.Add(Left:=(Target.Left) + 19, Top:=(Target.Top), Width:=14, Height:=14)
        zuffi = Target.Top + Rnd()
            With objNeu
                .PrintObject = False
                .Name = "loesch-" & Round(zuffi, 5)
                .Caption = "-"
                .OnAction = "Zeile_loe"
            End With
    End With
    Set objNeu = Nothing: Set Target = Nothing


End Sub




Public Function Zufallszahl(zuffi)
Dim lgZu As Double
    Randomize
    lgZu = Rnd()
End Function
 
Ohne VBA geht das mit Standard Excel nicht. Welches Excel Versionen werden eingesetzt? Ab 2007 kann man in den Mappen eigene Tabs für das Excel-Menüband hinterlegen, da muss man noch nicht mal die Tabellen mit VBA Zeug (Steuerelemente) verunstalten.
Ansonsten sind das nur 2 Funktionen, 1 zum hinzufügen und 1 zum löschen. Jedoch wirds kniffelig wenn man mit VBA noch nichts oder nicht viel gemacht hat.
 
Zurück
Oben