ausgefüllte Zellen mit Makro übertragen
#1
Hallo zusammen, :)

ich stehe vor der folgenden Herausforderung, bei der ich eure Hilfe brauchen könnte.

Ich habe die Tabelle "Sortiment". Die Anzahl von Zeilen und Spalten kann immer wieder variieren.
Hier trage ich für jeden Kunden die Preise und Mengen ein. Die gelben Zellen bei jedem Kunden bedeuten seine Bestellung. Diese sollten dann automatisch in die Tabelle "Bestellung" kopiert werden.
Die roten Produkte haben keine Mengen bekommen und sollten nicht rüber kopiert werden.
Die "sonstigen" Spalten werden einige Infos für mich enthalten, die aber in dieser Tabelle bleiben können und nicht rüber kopiert werden müssen.

In der Tabelle "Bestellung" habe ich einige Spalten (grau markiert), die schon vorgegeben sind.

Nun möchte ich mit einem Makro (am besten in einem Button), dass wenn ein Produkt mindestens einmal bestellt wurde, es dann in der Tabelle "Bestellung" in den Spalten Materialnr., Produkt und Farbe erscheint, mit entsprechenden Preisen und Mengen für entsprechenden Kunden.

Würde sowas überhaupt funktionieren oder ist die Sache zu kompliziert gedacht?

Hat hier jemand einen Ansatz, mit dem ich experimentieren könnte?
Für jede Hilfe wäre ich sehr dankbar.


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 13,35 KB / Downloads: 4)
Top
#2
(06.02.2017, 17:23)dimi.idgt schrieb: Würde sowas überhaupt funktionieren oder ist die Sache zu kompliziert gedacht?
Dein ganzer bisheriger Aufbau ist zu kompliziert gedacht.
Mit der richtigen Struktur reicht ein einfaches Filtern.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#3
(06.02.2017, 19:01)shift-del schrieb: Dein ganzer bisheriger Aufbau ist zu kompliziert gedacht.
Mit der richtigen Struktur reicht ein einfaches Filtern.

Das habe ich mir gedacht.
Jedoch habe ich zwei Tabellenblätter mit verschiedenen Spalten, die zum Einsatz kommen.
Filter geht dann nur in einem Tabellenblatt?
Top
#4
Die Spalten sind auf beiden Tabellenblättern identisch.
Filtern geht immer dort wo der Filter gesetzt ist.

Aber ich habe schon vermutet dass das noch nicht das ganze Ausmaß ist.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#5
(06.02.2017, 19:45)shift-del schrieb: Die Spalten sind auf beiden Tabellenblättern identisch.
Filtern geht immer dort wo der Filter gesetzt ist.

Aber ich habe schon vermutet dass das noch nicht das ganze Ausmaß ist.

Nun ja, die Datei ist ein Beispiel. Die Spalten heissen zwar identisch, werden aber verschiedene Inhalte haben.
Top
#6
So, ich habe langsam eine Lösung in Sicht. [Bild: smile.gif] 

Ich benutze eine Hilfspalte, in der bestimmt wird, ob eine Zeile eine Bestellmenge enthält:
=WENN(ODER(J3>0;N3>0;R3>0);MAX($A$4:A4)+1)
Die Spalte wird gefiltert.

Danach benutze ich diesen Code, um gefilterte Zeilen zu kopieren und in ein anderes Tabellenblatt einzufügen:

Code:
Code:

Option Explicit

Sub KopiereFilterZeile()

  ActiveSheet.Range("A3:C" & ActiveSheet.UsedRange.Rows.Count). _
  SpecialCells(xlCellTypeVisible).Copy
 
  Worksheets("BESTELLUNG").Range("A3").PasteSpecial


End Sub


Ich denke, ich wäre fast fertig. Nur eine Frage, wie bilde ich im Code folgendes ab?
Er soll mehrere einzelne Spalten kopieren. Also nicht nur A:C, sondern auch H, J, N usw. und sie dann entsprechend in I, L, O usw. einfügen.
Top
#7
Hallo,

so z.B.:


Code:
  Intersect(Range("A3:C" & UsedRange.Rows.Count). _
  SpecialCells(xlCellTypeVisible), Columns("H")).Copy
  Worksheets("BESTELLUNG").Range("I3").PasteSpecial


und das für jede Spalte. ActiveSheet kann man weglassen, da Du den Code aus der aktiven Tabelle heraus aufrufst.

Wenn AciveSheet sein müsste, dann besser so:



Code:
Sub KopiereFilterZeile()

 With ActiveSheet
   Intersect(.Range("H3:N" & .UsedRange.Rows.Count). _
   SpecialCells(xlCellTypeVisible), .Columns("H")).Copy
   Worksheets("BESTELLUNG").Range("I3").PasteSpecial
 
   Intersect(.Range("H3:N" & .UsedRange.Rows.Count). _
   SpecialCells(xlCellTypeVisible), .Columns("J")).Copy
   Worksheets("BESTELLUNG").Range("L3").PasteSpecial
 
   Intersect(Range("H3:N" & .UsedRange.Rows.Count). _
   SpecialCells(xlCellTypeVisible), .Columns("N")).Copy
   Worksheets("BESTELLUNG").Range("O3").PasteSpecial
 End With
 
End Sub
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • dimi.idgt
Top
#8
Hallo Atilla,

vielen Dank für deine Antwort!
Die zweite Variante hat mir sehr geholfen. Jetzt funktioniert's!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste