Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Transfer aus Übersicht auf einzelne Tage - Ratlos

Transfer aus Übersicht auf einzelne Tage - Ratlos
23.04.2014 09:25:57
Basti
Hallo liebes Forum,
ich sitze gerade an einer Aufgabe und scheitere ;(
Vielleicht finde ich hier Hilfe.
Es geht darum, ich habe eine Produktionsplanung in Excel, in der ausgehend von Kapazitätsrestriktionen (7,66 Std. pro Arbeitstag) vorhandene Aufträge auf verschiedene Tage aufgeteilt werden (A1:N14).
Diese Übersicht hätte ich jetzt gerne in eine Tagesübersicht nach dem Schema wie ab Zeile 18 transferiert, doch bekomme es leider nicht hin.
Über Index und Vergleich kriege ich lediglich den Schnittpunkt von z.B. dem Datum 24.04.14 (über Vergleich aus Zelle A23 raus.
Gibt es eine Möglichkeit, in der Spalte mit dem Datum wie in A23 (Spalte F) alle Zeilen mit einem Wert 0 auszugeben, so dass ich darüber den PK oder die Ident-Nr. in die Tagesübersicht bringen kann?
Oder gibt es einen anderen Ansatz, dieses Vorhaben zu realisieren?
Ich kann leider keine Datei anhängen, daher vorerst eine Übersicht der vereinfachten Testdatei als Bild.
http://www.directupload.net/file/d/3601/74lcayg4_jpg.htm
Ich hoffe, jemand kann hier Abhilfe schaffen?
Viele Grüße,
Basti

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bitte Bilder bzw Mappen HIER hochladen! orT
23.04.2014 09:34:50
Luc:-?
Bilder wdn dann auch sofort angezeigt!
Gruß Luc :-?

VBA-Vorschlag
23.04.2014 12:48:09
Klaus
Hi Basti,
lösch mal in deiner Musterdatei alles ab Zeile 17 nach unten und lass dann folgendes Makro laufen:
Sub ErstelleTagesPlaene()
'Variablen nach gusto ändern und anpassen
Const BlattDaten As String = "Blatt1"
Const SpalteAb As Long = 5
Const ZeileDatum As Long = 1
Const ZeileVon As Long = 2
Const SpaltePK As Long = 1
Const SpalteIdent As Long = 2
Const SpalteAnzahl As Long = 3
Const SpalteDLZ As Long = 4
Const SpalteDatumNeu As Long = 1
Const SpaltePKneu As Long = 1
Const SpalteIdentNeu As Long = 2
Const SpalteAnzahlNeu As Long = 3
Dim SpalteBis As Long
Dim ZeileBis As Long
Dim wksNeu As Worksheet
Dim s As Long   'Spaltenindex
Dim z As Long   'Zeilenindex
Dim s2 As Long  'Spalte Auswertung
Dim z2 As Long  'Zeile Auswertung
'Neues Blatt für die Auswertung einfügen
Sheets.Add
Set wksNeu = ActiveSheet
z2 = 1
With Sheets(BlattDaten)
.Activate
SpalteBis = .Cells(ZeileDatum, .Columns.Count).End(xlToLeft).Column
ZeileBis = .Cells(.Rows.Count, SpaltePK).End(xlUp).Row
For s = SpalteAb To SpalteBis
'Datum und Überschriften eintragen
wksNeu.Cells(z2, SpalteDatumNeu).Value = .Cells(ZeileDatum, s).Value
wksNeu.Cells(z2, SpalteDatumNeu).NumberFormat = "m/d/yyyy"
z2 = z2 + 1
wksNeu.Cells(z2, SpaltePKneu).Value = "PK"
wksNeu.Cells(z2, SpalteIdentNeu).Value = "Ident-Nr."
wksNeu.Cells(z2, SpalteAnzahlNeu).Value = "Anzahl anteilig"
z2 = z2 + 1
For z = ZeileVon To ZeileBis
If Not .Cells(z, s).Value = "" Then
'Werte übertragen
wksNeu.Cells(z2, SpaltePKneu).Value = .Cells(z, SpaltePK).Value
wksNeu.Cells(z2, SpalteIdentNeu).Value = .Cells(z, SpalteIdent).Value
wksNeu.Cells(z2, SpalteAnzahlNeu).Value = VBA.Round(.Cells(z, s).Value / .Cells( _
z, SpalteDLZ).Value * .Cells(z, SpalteAnzahl).Value, 0)
z2 = z2 + 1
End If
Next z
z2 = z2 + 1
Next s
End With
wksNeu.Cells.EntireColumn.AutoFit
End Sub
Anmerkung: Dein Muster ist falsch. Am 24.04. fehlt dir der Rest von Ident 220716, nochmal 508 Stück!
Die Rundung auf 0 Stellen hast du in der Formel vorgegeben, das habe ich übernommen. Für Rundungsfehler haftest du selber!
Da du weder Level noch Version angegeben hast, habe ich mich entschlossen die Zellformatierung (farbige Hintergründe der Zellen, genau genommen) zu ignorieren.
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA-Vorschlag
24.04.2014 03:04:58
Basti
Wow,
vielen, vielen Dank.
Ich habe den Code mit der Beispielmappe und auch mit der tatsächlichen Datei ausprobiert und es klappt einwandfrei, wenn auch natürlich etwas langsam :/
Dass ich meine Kenntnisse und meine Version nicht angegeben habe, hat wohl den Grund, dass ich den Thread vier mal begonnen habe und aufgrund eines am Mac nicht funktionierenden File-Uploads meine Angaben wieder weg waren. Ich bin kein absoluter Excel-Neuling, habe jedoch von VBA bis auf das bißchen, was ich während meines Studiums aufgeschnappt habe, keine Ahnung.
Daher wende ich mich nochmal mit einer Bitte zur Anpassung an Sie:
Ist es möglich, Tage, an denen nicht produziert wird (vorher festgelegt - z.B. Samstag, Sonntag, oder auch die Tage in der Tabelle nach der Fertigstellung der letzten Bestellung), also "leere" Spalten, nicht mit anzeigen zu lassen?
Ich blicke leider nicht so wirklich durch und kann das Makro daher nicht nach meinen Wünschen anpassen. Ein VBA-Grundkurs steht aber auf jeden Fall auf meiner ToDo-Liste, es erleichtert so vieles oder ermöglicht so viele Aufgaben ja erst.
Bezüglich der Formatierung:
Wie würde sich der Code verändern, wenn ich:
- Tage an denen nicht produziert wird nicht in die neue Übersicht übernehmen möchte
- eine zusätzliche Spalte "Model" in der Spalte rechts neben der Ident-Nr. habe?
Vielen Dank für die Mühe und liebe Grüße aus China,
Basti
Neue Datei, bereits mit Ihrem Makro:
https://www.herber.de/bbs/user/90332.xlsm

Anzeige
keine Zeit :-( AW: VBA-Vorschlag
24.04.2014 12:50:44
Klaus
Hallo Basti,
hier im Forum benutzen wir gerne "Vornamen" und das Du!
Deine Änderungen sind prinzipiell kein Problem, auch die Geschwindigkeit sollte sich noch deutlich erhöhen lassen. Ich habe aber diese Woche keine Zeit mehr ... ich lasse den Beitrag offen, vielleicht findet sich ja ein anderer Helfer! Am Montag schaue ich wieder ins Forum.
Du hast noch immer deine Excelversion nicht angegeben :-) Schreib sie einfach in den nächsten Beitrag.
Grüße,
Klaus M.vdT.

keine Zeit :-( AW: VBA-Vorschlag
25.04.2014 10:25:00
Basti
Hallo Klaus,
ich bin so im "Sie"-Modus, seit ich in China bin :)
Hier ist heute auch Freitag und am Wochenende werde ich mich nicht weiter mit dem Problemchen befassen, ich wäre Dir also sehr, sehr dankbar, wenn sich die Feinheiten noch einarbeiten ließen, sofern sich niemand Anderes findet.
Die zusätzliche Spalte "Model" habe ich selbst in das Makro eingefügt, gleichzeitig konnte ich mich etwas mit der Materie auseinandersetzen und habe dem neuen Arbeitsblatt einen anderen Namen gegeben und es direkt hinter dem Ursprungsblatt angeordnet.
Die aktualisierte Datei kann ich leider nicht hochladen. Wenn ich die nicht benötigten Informationen entferne und für die relevanten Daten die Werte einfüge, funktioniert das Makro auf wundersame Weise nicht mehr.
Ich werde am Montag noch mal weiter rumprobieren, bis auf das Problem mit den "leeren" Tagen läuft aber alles wie geschmiert (wenn auch etwas langsam (3-6 Minuten).
Euch ein schönes Wochenende.
LG Basti
Meine Office-Version ist übrigens Office 2011 für Mac

Anzeige
keine Zeit :-( AW: VBA-Vorschlag
25.04.2014 10:31:42
Philipp
Hallo Basti,
Du darfst dich auch gerne zu meinem Lösungsvorschlag mit einer normalen Excel Formel äußern, falls die VBA Lösung nicht so ganz funktioniert ;)
Nachteil ist halt nur, dass Du das Layout selber bauen musst.
Gruß
Philipp

im Prinzip so (ohne Code)
25.04.2014 13:44:54
Klaus
Hallo Basti,
Meine Office-Version ist übrigens Office 2011 für Mac
dann kann ich dir bei den Formatierungen absolut nicht helfen :-) Tip: mach die Formatierungen einmal per Hand, während der Makrorekorder läuft. Beim einbinden und verbessern des Rekordercodes hilft dir das Forum.
bis auf das Problem mit den "leeren" Tagen
An den Anfang der "Spalten"-Schleife einen IF-Block.
IF in der aktuellen Spalte keine Werte stehen, THEN nix ELSE den Zeilen-Code den du schon hast.
(wenn auch etwas langsam (3-6 Minuten)
Lösung: folgende Zeile ganz oben in den Code einbauen:
msgbox ("Bitte hol dir eben einen Kaffe!")
Dann ist das Zeitproblem nicht mehr vorhanden.
Nein, ernsthaft :-)
Es dauert Lange, weil jede Zelle einzeln geprüft wird. Die allermeisten Zellen sind ja leer. Der Trick ist jetzt, die leeren Zellen von vornerein von der Prüfung auszuschließen.
Da würde ich so vorgehen:
SPALTE: Autofilter setzen, keine leeren Zellen aus der aktuellen Spalte setzen
ZEILE: statt erste bis letzte Zeile ein "For each RNG in specialcells(xlcellsvisible)" (und in der Schleife alle Zeilen-Variablen auf RNG.row anpassen)
Dann den Autofilter wieder aufheben und für die nächste Spalte neu setzen.
Wie gesagt, leider keine Zeit das komplett runter zu schreiben. Vielleicht helfen dir ja die Ideen, oder ich komme am Montag dazu :-)
Philipp hat übrigens recht damit, du könntest dich zumindest bei seiner Antwort melden und sagen "die VBA Lösung gefällt mir besser aber danke für die Idee" oder so. Das gebietet schon die Foren-Höflichkeit :-)
@Phillip: Wenn meine erste Makrolösung ca 6 Minuten braucht, dann schätze ich seine reale Datenmenge ist so groß dass es deine Matrixformel überforden würde, oder?
Grüße,
Klaus M.vdT.

Anzeige
AW: Transfer aus Übersicht auf einzelne Tage - Ratlos
23.04.2014 13:09:52
Philipp
Hallo Basti,
ohne VBA:
Zelle C25 =
=SUMMENPRODUKT(WENN(ISTZAHL($E$2:$N$14);($A$2:$A$14=A25)*($B$2:$B$14=B25)*($E$1:$N$1=$A$23) *($E$2:$N$14)*($C$2:$C$14)/($D$2:$D$14))) 
Mit STRG+SHIFT*ENTER eingeben als Matrixformel. Da Leerzellen vorhanden sind, muss der Istzahl Kram da rein und als Matrixformel.
Gruß
Philipp

258 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige