Spalte fortführen

Bild

Betrifft: Spalte fortführen
von: René
Geschrieben am: 08.12.2003 14:28:19

Hallo zusammen!

Ich habe eine kurze Frage. Ich habe vier Spalten, in die ich mit der Funktion "Einfügen" -> "kopierte Zellen einfügen" regelmäßig Zellen einfüge.

Ich mache dies auf diesem Weg, da der Zellbereich in Formeln auf anderen Blättern automatisch übernommen wird! In Spalte 5 jedoch habe ich über eine Formel eine Plausibilätskontrolle der Eingaben in den ersten vier Spalten eingebaut!

Dies sollte möglichst beim Einfügen auch mit übernommen werden, damit auch die neu eingefügten Zellinhalte kontrolliert werden. Wie mache ich das??? Ich stehe leider auf dem Schlauch.

Danke für Eure Hilfe,
Gruß
René

Bild


Betrifft: AW: Spalte fortführen
von: NEWBE
Geschrieben am: 08.12.2003 14:52:07

Wie sieht die Plausibiltätskontrolle denn aus ??


Bild


Betrifft: AW: Spalte fortführen
von: René
Geschrieben am: 08.12.2003 15:00:58

Die sieht so aus, daß in der ersten Spalte Artikel eingefügt werden und in den nächsten drei Spalten Umsätze. Diese werden auf anderen Blättern jahresspezifisch addiert. Die Kontrolle kontrolliert, ob die Teile, die importiert werden auf den anderen Blättern hinterlegt sind, so daß es ausgeschlossen ist, daß Umsätze unberücksichtigt bleiben! Sie gibt einfach den Hinweis "ACHTUNG TEIL NICHT ANGELEGT AUS!!"


Bild


Betrifft: AW: Spalte fortführen
von: IngoG
Geschrieben am: 08.12.2003 14:58:41

Hallo Rene,
es gibt mind. 2 möglichkeiten:

1. Du fügst immer eine ganze zeile ein und kopierst aus spalte 5 die formel in die leere Zelle (evt auch über macro)

2. Du änderst deine Formel in folgender Form: anstatt =wenn(a1="";"";"Bsp")
schreibst Du: =wenn(indirekt("a"&zeile())"";"";"Bsp")
Du mußt allerdings darauf achten, unten genügend formeln in Spalte 5 stehen zu haben, da diese nicht mit nach unten wandern.

Gruß Ingo


Bild


Betrifft: AW: Spalte fortführen
von: René
Geschrieben am: 08.12.2003 15:09:11

Ok, mit dem Ausfüllen der Zellen nach unten habe ich auch schon gearbeitet. Allerdings werden sehr viele Daten erfasst werden (ca. 1000), so daß die Performance und Schnelligkeit der Tabelle unwahrscheinlich leidet. Für das Einfügen braucht er dann Minuten! Und das manuelle nach unten ausfüllen gerät leider leicht in Vergessenheit, besonders weil ich nicht als einziger an dieser Tabelle arbeiten werde. Ich dachte, es gäbe eine Möglichkeit, daß irgendwie automatisch die Formel nach unten mit übernommen wird!!?? Aber trotzdem herzlichen Dank für Deine Hilfe!
René


Bild


Betrifft: Nachfragen
von: Martin Beck
Geschrieben am: 08.12.2003 16:02:26

Hallo Rene,

1. Wäre auch eine Lösung mit VBA möglich/zulässig?

Wenn ja:

2. Welches ist der Bereich, in den Du kopierst? Spalte A:D von Zeile 1 bis Zeile n, wobei n variabel ist?

3. Überschreibst Du dabei vorher vorhandene Einträge? Oder werden die neuen DAten unten angefügt?

Gruß
Martin Beck


Bild


Betrifft: AW: Nachfragen
von: René
Geschrieben am: 08.12.2003 17:55:46

Hi Martin!

Also zur Frage 1: Ich bin ein von Natur aus ehrlicher Mensch und ich muss Dir sagen, obwohl es mir unangenehm ist, ich habe keine Ahnung was VBA überhaupt ist! :-( Deshalb wird sich das wohl als eher schwierig erweisen! Denkbar wäre es aber!

Frage 2: So ist es!

Frage 3: Es wird überschrieben, wobei bei jedem überschreiben aber mehr Daten hinzu kommen!!

Vielen Dank,
René


Bild


Betrifft: Lösung mit VBA
von: Martin Beck
Geschrieben am: 09.12.2003 13:59:57

Hallo René,

1. VBA = Visual Basic for Applications, d.h. vereinfacht die Makrosprache von Excel.

2. Nachfolgend eine Lösung Deines Problems in VBA. Dabei habe ich mal angenommen, daß

a) Deine Tabelle "Archiv" heißt. Diesen Ausdruck mußt Du durch den richtigen Tabellennamen ersetzen.

b) Die Plausibilitätskontrolle bereits in Zelle E1 beginnt, d.h. daß in E1 bereits eine Formel steht, die nach unten kopiert werden kann. Steht die Formel weiter unten, bitte nochmal mitteilen, wo genau.

Hier jetzt der Code:


Private Sub Worksheet_Calculate()
Dim ws As Worksheet
Set ws = Worksheets("Archiv")
z = ws.Range("A65536").End(xlUp).Row
ws.Range("E1").Copy Destination:=ws.Range(Cells(1, 5), Cells(z, 5))
End Sub


Diesen Code kopierst Du. Dann Klick mit der rechten Maustaste auf das Register der betreffenden Tabelle. Option "Code anzeigen" anklicken. Excel wechselt jetzt in die sog. Entwicklungsumgebung. Der Cursor blinkt in einem großen weißen Feld, in dem irgendwelches kryptisches Zeug steht. Dieses bitte löschen und dann den obigen Code einfügen. Die Anpassung des Tabellennamens im Code vornehmen. Zu Excel wechseln und in den Bereich A:D etwas hineinkopieren.

Wenn's nicht funktioniert, noch einmal melden.

Gruß
Martin Beck


Bild


Betrifft: AW: Lösung mit VBA
von: René
Geschrieben am: 09.12.2003 16:36:35

Hallo Martin!

Das ist echt super nett von Dir. Danke sehr. Ich werde es morgen sofort ausprobieren, ob es geklappt hat. Die Formel steht in der Zelle J4, ich habe nur aus Vereinfachungsgründen A bis D gesagt. Außerdem sind die ersten 3 Zeilen mit Überschriften belegt. Aber ich denke, dann muss ich doch einfach das "E1" durch "J4" ersetzen, oder? Nochmals vielen Dank!

Gruß René

P.S.: Wie lernt man eigentlich diese VBA-Sprache?


Bild


Betrifft: AW: Lösung mit VBA
von: Martin Beck
Geschrieben am: 09.12.2003 17:34:01

Hallo René,

wenn ich den Tabellenaufbau jetzt richtig verstanden habe, mußt Du die Zeile

ws.Range("E1").Copy Destination:=ws.Range(Cells(1, 5), Cells(z, 5))


durch

ws.Range("J4").Copy Destination:=ws.Range(Cells(4, 10), Cells(z, 10))

ersetzen.

Zum Thema VBA erlernen:

1. Makrorekorder verwenden.
2. Hier mitlesen und Fragen stellen.
3. Ein VBA-Buch kaufen und durcharbeiten.

Gruß
Martin Beck


Bild


Betrifft: AW: Lösung mit VBA
von: René
Geschrieben am: 10.12.2003 19:23:00

Hi Martin!

Das ist echt ne tolle Sache. Ich bin überwältigt. Also, ich glaube es wird Zeit, daß ich mich mal um dieses VBA kümmere, wenn ich weiter so aufwändige Tabellen erstellen wird.
Vielen herzlichen Dank für Deine Mithilfe. Die Tabelle arbeitet so wie ich es will. Schönen Abend noch,
Gruß René


Bild

Beiträge aus den Excel-Beispielen zum Thema " Spalte fortführen"