Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte in andere Tabelle kopieren und sortieren

Werte in andere Tabelle kopieren und sortieren
02.05.2017 09:19:31
Claudio
Hallo zusammen,
in einer Datei "Eingang Offerten 2017" habe ich für jeden Monat ein Blatt sowie ein Blatt "Arbeitsvorrat" angelegt.
In den Blättern ist jeweils eine Tabelle mit den Spalten Offerte/Abgebot/Auftrag/Absage/Preis. Jede Zelle der Spalten Offerte/Abgebot/Auftrag/Absage hat ein Steuerelement (Kästchen zum anklicken). Durch die Aktivierung der jeweiligen Steuerelemente wird die Hintergrundfarbe der ganzen Zeile farbig (Durch Anklicken des Steuerelements "Auftrag" wird dann die Hintergrundfarbe der ganze Zeile durch eine bedingte Formatierung grün.
Problemstellung: Wenn eine Zeile durch die Aktivierung der bedingten Formatierung grün wird, soll der Wert "Preis" in der letzten Spalte in das Blatt "Arbeitsvorrat" fortlaufend kopiert werden und dies eben von allen 12 Blättern (jeder Monat).
Ich möchte also in dem Blatt "Arbeitsvorrat" eine fortlaufende Liste erstellen, in welche die Werte der einzelnen Aufträge aller Monate aufgelistet sind.
Hat jemand eine Lösung dafür ?
VIIIELEN DANK im voraus !!
Claudio
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bitte Beispieldatei owT.
02.05.2017 10:01:33
ChrisL
.
AW: Bitte Beispieldatei owT.
02.05.2017 14:09:02
Claudio
Hier ist die Beispieldatei:
https://www.herber.de/bbs/user/113240.xlsx
Die Preise der Aufträge (Hintergrundfarbe grün) der Blätter Januar 2017 bis Dezember 2017 sollen in Blatt "Arbeitsvorrat" fortlaufend in Spalte "L" (Preis exkl. Mwst.) aufgelistet werden.
Danke + Gruss
Claudio
Anzeige
Zeilen übertragen
02.05.2017 14:49:02
ChrisL
Hi Claudio
Hier mal ein erster Wurf. Den Kontrollkästchen müsstest du folgendes Makro zuweisen:
Sub Makro1()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Long, sh As Shape
Set WS1 = ActiveSheet
Set WS2 = Worksheets("Arbeitsvorrat")
With WS1
For iZeile = .Cells(Rows.Count, 23).End(xlUp).Row To 8 Step -1
If .Cells(iZeile, 23) Then
.Rows(iZeile).Copy WS2.Rows(WS2.Cells(Rows.Count, 1).End(xlUp).Row + 1)
For Each sh In .Shapes
If sh.TopLeftCell.Row = iZeile Then sh.Delete
Next sh
.Rows(iZeile).Delete
End If
Next iZeile
End With
End Sub

Vorerst wird die ganze Zeile kopiert. Es ist mir klar, dass die Datenfelder nicht mit dem Blatt Arbeitsvorrat übereinstimmen. Dies könnte man zwar korrigieren, aber dann verlierst du Daten d.h. Spalten G:J wären gelöscht. Das Feld "Preis" ist dafür doppelt.
Darum würde ich alles kopieren und bei Bedarf die überflüssigen Spalten ausblenden.
cu
Chris
Anzeige
AW: Zeilen übertragen
02.05.2017 15:12:04
Claudio
Hallo Chris,
wow, das ging aber schnell !! DANKE !
Ich hab dir jedoch die falsche Beispieldatei geschickt...
In Blatt "Arbeitsvorrat" möchte ich eben die Werte der Aufträge von Blatt Januar bis Dez. fortlaufend auflisten. Um den Arbeitsvorrat zu ermitteln gibt es nach der Spalte "L" (Preis) Spalten mit der Bezeichnung Teilrechnung 1-4 und die Spalte Rechnung (damit wir wissen ob wir den gesamten Preis verrechnet haben).
Dürfte ich nochmals deine Hilfe in Anspruch nehmen ?
Wäre super !!
Hier die richtige Datei:
https://www.herber.de/bbs/user/113242.xlsx
Gruss
Claudio
Anzeige
Tabellen zusammenfassen
02.05.2017 15:52:38
ChrisL
Hi Claudio
Wie die Sache mit den Teilrechnungen funktioniert ist mir nicht klar.
Sofern ich dich richtig verstehe möchtest du alle grünen Zeilen auf dem Blatt "Arbeitsvorrat" zusammenfassen (kopieren und nicht ausschneiden).
Sub Makro1()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Long, sh As Shape
Set WS2 = Worksheets("Arbeitsvorrat")
For Each WS1 In ThisWorkbook.Worksheets
If WS1.Name  WS2.Name Then
With WS1
For iZeile = .Cells(Rows.Count, 23).End(xlUp).Row To 8 Step -1
If .Cells(iZeile, 23) Then
.Rows(iZeile).Copy WS2.Rows(WS2.Cells(Rows.Count, 1).End(xlUp).Row + 1)
'            For Each sh In .Shapes
'                If sh.TopLeftCell.Row = iZeile Then sh.Delete
'            Next sh
'            .Rows(iZeile).Delete
End If
Next iZeile
End With
End If
Next WS1
End Sub
Geduld zählt leider nicht zu meinen Stärken. Darum bitte ich Dich, um eine vollständige (auch für Aussenstehende verständliche) Anforderung ggf. mit Beispiel, wie das gewünschte Ergebnis konkret aussieht. Ich bin zuversichtlich, dass wir die Aufgabe damit in einem Wisch erledigen können.
cu
Chris
Anzeige
AW: Tabellen zusammenfassen
02.05.2017 16:56:23
Claudio
Hallo Chris,
In die Tabellen der Blätter Januar bis Dezember tragen wir fortlaufend Monat für Monat Offert-Anfragen ein (Datum, Kunde, Architekt, Preis).
Wenn es zum Auftrag kommt, wird die ganze Zeile grün (durch Aktivierung des Steuerelements in Spalte "S" und bedingter Formatierung), bei Absage rot, bei Offerte orange, bei Abgebot gelb.
Nun sollten nur die Preise der erhaltenen Aufträge, (nicht die ganzen Zeilen) in die Tabelle "Arbeitsvorrat" in Spalte "L" fortlaufend kopiert werden. Und dies fortlaufend und nacheinander von den Tabellen Januar bis Dezember. Die Zeilen, welche in den Tabellen Januar bis Dezember durch die Aktivierung des Steuerelements grün geworden sind, können gelöscht werden.
In Tabelle "Arbeitsvorrat" werden dann die Teilrechnungen (Spalte M bis P) von Hand erfasst und in Spalte "Q" aufsummiert, um zu prüfen, ob der ganze Preis des Auftrags verrechnet wurde.
Hier die Beispieldatei mit Vermerk in Tabelle "Arbeitsvorrat"
https://www.herber.de/bbs/user/113245.xlsx
Gruss
Claudio
Anzeige
AW: Tabellen zusammenfassen
02.05.2017 18:30:46
ChrisL
Hi Claudio
Jetzt kommen wir der Sache näher (Code mache ich morgen). Aber ein paar Fragen hätte ich noch.
- Ausser Preis/Summe steht jetzt überall "Wird von Hand ausgefüllt", dann bleibt nicht mehr viel zum Übertragen ;) Ist es richtig, dass du Datum Eingabe, Kunde, Architekt, Arbeit, Preis übertragen lassen willst?
Spalte B = B, D:F = D:F, U = L
Summenformel in Q
1 Mitarbeiter verkauft 1 Auftrag oder gibt es manchmal auch mehrere Verkäufer für einen Auftrag?
Könnte man für die Mitarbeiter-Kennzeichnung und den Auftragsstatus auch einfach eine Dropdown-Auswahl machen? (Solche CheckBox-Haufen sind etwas umständlich zum Erstellen, im Auswerten und verschieben sich gerne beim Filtern oder Kopieren. Zudem ungünstig in der Wartung z.B. bei Aus- oder Neueintritt.)
Noch ein paar Anregungen zum Aufbau generell. Das Hauptproblem besteht darin, dass du (so wie ich verstehe) manuelle Eingaben auf den Monatsblättern und gleichzeitig auf der Zusammenfassung (Arbeitsvorrat) machst.
Ganz einfach geht eine Aktualisierung, wenn man den Inhalt löscht und die ganze Tabelle neu aufbaut. Wenn jetzt aber die Zusammenfassung manuell bearbeitet wird, kann man nicht löschen/überschreiben. Man muss also prüfen, ob ein Datensatz bereits vorhanden ist und nur bei Nichtvorhandensein neu erstellen. Da auf den Monatsblättern keine eindeutige Auftragsnummer vorhanden ist, ginge dies nur aus einer Kombination von Kundenname und Preis (evtl. noch ein zusätzlicher Quer-Check über die Anzahl). Ohne Primärschlüssel (z.B. eindeutige Auftragsnummer) wird der Abgleich ziemlich unsicher (Beispiel: gleicher Kunde hat mehrere Aufträge mit identischem Preis).
Eigentlich würde ich den Prozess/Aufbau generell überdenken und zwar würde ich unbedingt die Monatsblätter durch Jahresblätter ersetzen (Verwaltung in einer grossen Tabelle). Das "zerstreuen" von Daten ist technisch mühsam und du musst für die kleinste Auswertung in die Trickkiste greifen.
Willst du z.B. mal wissen, wie hoch das Volumen der nicht erhaltenen Aufträge ist, stehst du bereits wieder an. Die zentrale Datenverwaltung hat weitere Vorteile z.B. Suche nach einem bestimmten Kunden, Filtern und Auswerten. Auswerten kannst auch nach Monat (z.B. Pivot-Tabelle oder SUMMEWENNS() Formel). Bezüglich Benutzerfreundlichkeit kann man vieles Tun z.B. Standard-Filter definieren und mit TEILERGEBNIS kombinieren. Oder mit etwas VBA ein automatischer Datumseintrag, Auftragsnummer generieren, User-Erkennung...
Rein Datentechnisch zwar ungünstig, aber m.E. OK, ist der Übertrag von erhaltenen Aufträgen ins nächste Blatt. Aber du brauchst da eine klare Trennung. Entweder verschiebst du den Datensatz (die Zeile) komplett oder die automatisch übertragenen Spalten im Arbeitsvorrat sind zur Bearbeitung gesperrt.
cu
Chris
Anzeige
AW: Tabellen zusammenfassen
03.05.2017 08:51:15
ChrisL
Hi Claudio
https://www.herber.de/bbs/user/113269.xlsm
Private Sub Worksheet_Activate()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Long, letzteZeile As Long
Set WS2 = Worksheets("Arbeitsvorrat")
For Each WS1 In ThisWorkbook.Worksheets
If WS1.Name  WS2.Name And WS1.Name  "Hilfsblatt" Then
For iZeile = 8 To WS1.Cells(Rows.Count, 4).End(xlUp).Row
If WS1.Cells(iZeile, 13) = "Auftrag" And _
WorksheetFunction.CountIfs(WS2.Columns(4), WS1.Cells(iZeile, 4), _
WS2.Columns(8), WS1.Cells(iZeile, 14)) = 0 Then
letzteZeile = WS2.Cells(Rows.Count, 4).End(xlUp).Row + 1
WS2.Cells(letzteZeile, 2) = WS1.Cells(iZeile, 2).Value
WS2.Range(WS2.Cells(letzteZeile, 4), WS2.Cells(letzteZeile, 6)) = _
WS1.Range(WS1.Cells(iZeile, 4), WS1.Cells(iZeile, 6)).Value
WS2.Cells(letzteZeile, 7) = WS1.Cells(iZeile, 11).Value
WS2.Cells(letzteZeile, 8) = WS1.Cells(iZeile, 14).Value
WS2.Cells(letzteZeile, 13).Formula = "=SUM(I" & letzteZeile & ":L" &  _
letzteZeile & ")"
End If
Next iZeile
End If
Next WS1
End Sub
Das Blatt Arbeitsvorrat aktualisiert sich bei Aktivierung automatisch. Es werden jedoch nur neue Daten hinzugefügt und nicht gelöscht d.h. wenn du den Auftragsstatus von Auftrag auf Absage änderst, dann müsstest du den Datensatz manuell löschen.
Unberücksichtigt sind allfällige Duplikate (identische Aufträge).
cu
Chris
Anzeige
AW: Tabellen zusammenfassen
03.05.2017 09:17:39
Claudio
Guten Morgen Chris
Erst mal Danke dafür, dass du dich meinem Problem so engagiert annimmst !
Deine Lösung sieht super aus, jedoch aktualisiert sich das Blatt Arbeitsvorrat nicht...
Muss ich den Code noch irgendwo eintragen ?
Gruss
Claudio
AW: Tabellen zusammenfassen
03.05.2017 09:37:50
ChrisL
Hi Claudio
Du müsstest Makros aktivieren, dann aktualisiert es sich automatisch.
cu
Chris
Anzeige
AW: Tabellen zusammenfassen
03.05.2017 09:59:37
Claudio
Hallo Chris
Es funktioniert !
SUUUUPER ! Viiiielen Dank !!
Gruss
Claudio

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte in andere Tabelle kopieren und sortieren


Schritt-für-Schritt-Anleitung

Um Excel-Werte in eine andere Tabelle zu übertragen und zu sortieren, folge diesen Schritten:

  1. Erstelle eine neue Tabelle: Öffne Excel und erstelle eine neue Tabelle, in der du die Daten sammeln möchtest (z.B. "Arbeitsvorrat").

  2. Verwende Kontrollkästchen: Füge Kontrollkästchen in die Spalte deiner Monatsblätter ein, um die Aufträge zu kennzeichnen (z.B. Auftrag, Absage).

  3. Bedingte Formatierung einrichten: Setze die bedingte Formatierung so, dass die Zeilenfarbe sich verändert, wenn ein Kontrollkästchen aktiviert wird.

  4. Makro erstellen: Erstelle ein Makro, das die Daten von den Monatsblättern in die Tabelle "Arbeitsvorrat" überträgt. Verwende den folgenden VBA-Code als Ausgangspunkt:

    Sub WerteÜbertragen()
       Dim WS1 As Worksheet, WS2 As Worksheet
       Dim letzteZeile As Long, iZeile As Long
    
       Set WS2 = Worksheets("Arbeitsvorrat")
       For Each WS1 In ThisWorkbook.Worksheets
           If WS1.Name <> WS2.Name Then
               For iZeile = 8 To WS1.Cells(Rows.Count, 4).End(xlUp).Row
                   If WS1.Cells(iZeile, 13) = "Auftrag" Then
                       letzteZeile = WS2.Cells(Rows.Count, 1).End(xlUp).Row + 1
                       WS2.Cells(letzteZeile, 2) = WS1.Cells(iZeile, 2).Value
                       WS2.Cells(letzteZeile, 4) = WS1.Cells(iZeile, 4).Value
                       WS2.Cells(letzteZeile, 6) = WS1.Cells(iZeile, 11).Value
                       WS2.Cells(letzteZeile, 14) = WS1.Cells(iZeile, 14).Value
                   End If
               Next iZeile
           End If
       Next WS1
    End Sub
  5. Makro zuweisen: Weise das Makro den Kontrollkästchen zu, sodass es beim Aktivieren der Kontrollkästchen ausgeführt wird.


Häufige Fehler und Lösungen

  • Fehler: Daten werden nicht übertragen
    Lösung: Überprüfe, ob das Makro aktiviert ist. Gehe zu Entwicklertools > Makros und stelle sicher, dass das Makro korrekt zugewiesen ist.

  • Fehler: Zeilen verschwinden unerwartet
    Lösung: Achte darauf, dass dein Makro die Zeilen nur löscht, wenn dies gewünscht ist. Kommentiere die Zeilen aus, die Zeilenlöschen betreffen, wenn du sie behalten möchtest.


Alternative Methoden

  • Formeln nutzen: Du kannst auch Formeln wie WENN und SVERWEIS verwenden, um Werte aus einer anderen Tabelle zu übernehmen. Dies ist besonders nützlich, wenn du keine Makros verwenden möchtest.

  • Power Query: Für komplexere Datenübertragungen kannst du Power Query in Excel verwenden, um Daten automatisch in andere Tabellen zu kopieren und zu transformieren.


Praktische Beispiele

  1. Preise in Arbeitsvorrat kopieren: Wenn du den Preis von Aufträgen in das Blatt "Arbeitsvorrat" übertragen möchtest, kannst du das Makro anpassen, um die spezifischen Spalten zu kopieren, wie in den vorherigen Abschnitten beschrieben.

  2. Bedingte Formatierung kopieren: Um die bedingte Formatierung fortlaufend zu kopieren, stelle sicher, dass die Formatierungsregeln auch auf die Zielzelle in der Tabelle "Arbeitsvorrat" angewendet werden.


Tipps für Profis

  • Verwende eine eindeutige Auftragsnummer: Um die Zuordnung der Daten zu erleichtern, kannst du jeder Zeile eine eindeutige Auftragsnummer zuweisen, die die Verarbeitung einfacher macht.

  • Automatisierung optimieren: Setze Ereignisprozeduren in VBA ein, um das Aktualisieren der Arbeitsvorrat-Tabelle zu automatisieren, ohne dass der Benutzer manuell eingreifen muss.


FAQ: Häufige Fragen

1. Wie aktiviere ich Makros in Excel?
Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center und aktiviere die Option für Makros.

2. Kann ich mehrere Spalten gleichzeitig übertragen?
Ja, du kannst in deinem VBA-Code mehrere Spalten in einer Zeile kopieren, indem du die entsprechenden Zellreferenzen anpasst.

3. Wie kann ich sicherstellen, dass keine Duplikate übertragen werden?
Du kannst eine Überprüfung einbauen, die sicherstellt, dass ein Datensatz nur übertragen wird, wenn er nicht bereits in der "Arbeitsvorrat"-Tabelle vorhanden ist.

4. Was mache ich, wenn die Tabelle zu unübersichtlich wird?
Eine Option ist, die Daten in neue Arbeitsblätter zu duplizieren oder Filter zu verwenden, um die Sichtbarkeit der Daten zu verbessern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige