22.08.2022, 16:33 (Dieser Beitrag wurde zuletzt bearbeitet: 22.08.2022, 16:34 von perostojkov.)
Hallo, ich habe mir gedacht, dass es schwer sein wird. Hier als Anhang jetzt die original Tabelle. Soweit ich konnte, habe ich die restlichen Tabellen, formel und makros entfernt.
also, wenn ich nur Dein Bild anschaue, scheint die Eingabe immer bei einem Wechsel zu erfolgen?
Vorgehensweise: - Wechsel per Formel feststellen - Anhand des Ergebnisses filtern - In erster sichtbarer Datenzelle Deine Zahl eingeben - mit Doppelklick auf untere rechte Ecke automatisch ausfüllen - es werden nur die sichtbaren Zellen berücksichtigt
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Danke, ich habe dich leider nicht verstanden was du meinst.
Ich habe erst mal das ganze mit REST Formel gelöst. Es funktioniert gut, siehe Anhang
Ich denke, dass es kein problem sein wird das ganze mit CHANGE und VBA, REST zu lösen. Etwas ahnliches habe ich schon mal gemacht, muss nachher suchen. Im Moment habe ich Stress, falls es nicht klappt, werde mich noch mal melden. Meine vba Lösung werde ich auch posten.
wenn Du irgendeine Formel bilden kannst - Du schriebst ja was von REST, die Dir die betreffenden Zeilen irgendwie kennzeichnet, dann geht das mit dem Filtern ...
Mit einem Makro könnte man es so machen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'Wenn Spalte = 2 (B) und Anzahl der Zellen = 1, dann If Target.Column = 2 And Target.Cells.Count = 1 Then 'Wenn Zeile >= 3, dann mit Anzahl Zeilen aus B1 ausfuellen If Target.Row >= 3 Then Target.Resize(Cells(1, 2).Value).FillDown 'Ende Wenn Spalte = 2 (B) und Anzahl der Zellen = 1, dann End If End Sub
Das Makro überschreibt dann aber rigoros, ohne nachzufragen, alle n Zellen ab der Eingabezelle. Falls man da einschreiten will, muss man den code entsprechend erweitern.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • perostojkov
26.08.2022, 12:17 (Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2022, 12:20 von perostojkov.)
Hallo schauan, DANKE ich habe dein Code ausprobiert. Es war mir irgendwie zu hart bzw ich kann den nicht erweitern.
Ich habe jetzt etwas anderes gemacht. Es ist blöd mit Select, vielleicht kann jemand den optimieren, sind bestimmt viele Fehler drin. Macht aber genau das, was ich am Anfang eigentlich wollte, ausser die Übertragung auf der nächsten Seite.
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Dim RllAnzahl As Byte If Not Intersect(Target, Range("v13:w35,v55:w78")) Is Nothing Then Application.ScreenUpdating = False RllAnzahl = Range("V12").Value ActiveCell.Offset(-1, 0).Select For I = 1 To RllAnzahl - 1 Selection.Copy ActiveCell.Offset(1, 0).Select If ActiveCell.Value = vbNullString Then ActiveCell.PasteSpecial Else: Exit Sub End If Next I ActiveCell.Offset(1, 0).Select ActiveCell.Offset(100, 0).Copy ' weil copy selecton nervt End If Application.ScreenUpdating = True End Sub
Excel ist kein Registerkarte von Papier. Lehne das 'Papierdenken' ab. Erstelle die Daten wie ein Database: Records (Zeilen) und Fields (Spalten) Dann verdämpft dein 'Problem'. Dus hast ein Datenstrukturproblem, kein Excel Problem.
wenn DU meine Kommentare liest, dann steht doch da, was der Code tut.
In Deinem Beipiel hast Du die Daten in Spalte B, ab B3, und die Anzahl in B1. Wenn Du z.B. was in B3 eingibst und hast oben die 4, dann wird Dir B3:B6 ausgefüllt. Gibst Du anschließend was in B7 ein, dann kommen die Einträge in B7:B10 usw.
Meine Prüfung ist. z.B. 'Wenn Spalte = 2 (B) und Anzahl der Zellen = 1, dann If Target.Column = 2 And Target.Cells.Count = 1 Then
und Deine If Not Intersect(Target, Range("v13:w35,v55:w78")) Is Nothing Then
Meine Anzahl ist Cells(1, 2).Value --> entspricht Zeile 1, Spalte 2, also B2
und Deine RllAnzahl = Range("V12").Value
Dann solltest Du doch was draus machen können ... Wo ist denn Dein Code her?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • perostojkov
Hallo, ich wusste es, dass ihr schimpfen werdet. Den Code habe ich selbst gemacht, sieht man doch.
Bin eigentlich nur Maschinenarbeiter der die Produktionsdaten in Excel festhalten muss. Die Vorlage ist fast 20j alt, wurde kaum verändert, ich wollte uns nur etwas einfacher machen. Nicht nur vba, auch meine normale excel Kenntnisse sind schlecht.