Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
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

Einfuegposition in Tabelle festlegen

Einfuegposition in Tabelle festlegen
22.08.2014 11:16:24
Joachim
Hallo zusammen,
ich bin wirklich kein VBA Experte, benoetige aber eine VBA-Loesung, da herkoemmliche Vorgehensweisen versagen. Ich habe schon viele sehr viele gute Beitraege in diesem Forum gelesen, die mir bisher auch immer weitergeholfen haben und ich finde es beeidruckend, wie sich hier gegenseitig geholfen wird. Fuer mein aktuelles Problem habe ich jedoch bisher keinen Ansatz gefunden.
Ich arbeite gerade an einer VBA Loesung, um woechentliche Produktionszahlen (u.a. Output, Produktivitaet, etc.) in entsprechende Jahresuebersichten zu kopieren. Die Problemstellung ist bei allen zu uebertragenden Produktionszahlen die gleiche, weshalb ich sie hier einmal fuer "Output" darstellen werde.
Nun zur Problemstellung: In einem Sheet ("KPI Figures") der Arbeitsmappe sammle ich alle Produktionszahlen einer Woche (Output Woche xx)
In diesem Sheet steht in D5 die Kalenderwoche, in G14 der geplante Output, in G15 der aktuelle Output (jeweils als Zahlenwerte)
Am Ende der Woche moechte ich dann durch das Klicken eines Buttons diese woechentlichen Produktionsdaten fuer Output in ein entsprechendes separates Sheet "YTD Output" kopieren.
Dieses "YTD Output" sheet ist dabei so aufgebaut, dass es eine Tabelle enthaelt, die die Wochen 1-26 im Bereich D8- AC10 und die Wochen 27-52 unmittelbar darunter im Bereich D12-AC14 abbildet. Innerhalb dieser Bereiche stellt die 1.Zeile die Kalenderwoche, 2.Zeile den geplanten Output und die 3. Zeile den aktuellen Output dar.
Ziel ist es nun, dass nach druecken des Buttons das Makro im "KPI Figures" Sheet schaut in welcher Woche wir uns befinden (also den Wert erkennt der in D5 steht), und gleichzeitig die Outputwerte aus G14 und G15 kopiert. Danach ins Sheet "YTD Output" geht dort in der Tabelle die Woche sucht, die mit der Woche aud D5 uebereinstimmt und dort in die jeweiligen zwei Zeilen darunter die Werte aus G14 und G15 einfuegt.
Das gleiche soll dann identsich fuer die anderen Produktionszahlen wie z.B. Productivity etc. gemacht werden.
Ich habe schon viel herumprobiert, aber leider noch keine anstaendige Loesung gefunden. Bisher arbeite ich mit einem Makro, das immer die naechste freie Zelle in einer extra Datenbank findet dort die Werte einfuegt und dann in meine TYD Output Tabelle einen Zellbezug herstellt. Leider ist dies eine sehr wacklige Angelegenheit, da viele Personen auf diese Arbeitsmappe Zugriff haben und damit in Zukunft arbeiten muessen.
Waere euch sehr dankbar wenn mir jemand von euch weiterhelfen koennte.
Vielen Dank vorab!!
Viele Gruesse und einen schoenen Tag
Joe

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
BeiSpielMappe ?
22.08.2014 11:51:30
Erich
Hi Joe,
du möchtest sicher nicht, dass sich alle potentiellen Antworter die Mühe machen, deine Excelmappe nachzubauen.
Ich werde das nicht tun.
Wenn du schnelle und vielleicht auch gute Antworten haben möchtest, kann ich dir nur empfehlen,
eine kleine anonymisierte BeiSpielMappe hochzuladen, in der alle relevanten Blätter und einige Daten,
aber auch der bisherige Code enthalten sind.
Natürlich sollte zu sehen sein, wie das Ergebnis aussehen soll.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: BeiSpielMappe ?
22.08.2014 12:57:06
Joachim
Hallo Erich,
nein, ich verlange natuerlich nicht von euch, dass ihr die Mappe selbststaendig nachbaut.
habe hier eine Beispielmappe hochgeladen.
https://www.herber.de/bbs/user/92238.xlsm
Momentan funktioniert das Makro wie gesagt so, dass es nach druecken des Buttons die Daten in die Sheets "Output Datenbank", "Productivity Datenbank" etc. einfuegt und zwar auf die Weise, dass in den jeweiligen Sheets die naechste freie Spalte gesucht wird und dort der Wert eingefuegt wird. Danach sind die eigtlichen Zielsheet "YTD Output" etc. mit diesen Datenbanken verknuepft.
Ich moechte aber von diesem Umweg ueber die Datenbanken weg und einen direkten Weg finden. Ich hoffe das ist aus der Problemstellung aus meinem ersten Beitrag von heute morgen klar geworden.
Waere dir wirklich dankbar, wenn du da irgendwas weisst.
Vielen Dank vorab!
Viele Gruesse
Joe

Anzeige
Codevorschlag
23.08.2014 11:17:19
Erich
Hi Joachim,
da lässt sich manches vereinfachen, nicht nur der Wegfall der ...Datenbank-Blätter.
Aber es besteht noch einiger Klärungsbedarf.
Du hast die Wochen 01 bis 52 vorgesehen. Sind das DIN-Kalenderwochen?
Dann kann es z. B. sein, das zur KW01 noch bis zu 3 Tage des Vorjahres gehören.
Es gibt auch Jahre mit 53 KWn. Wird dann die 53. KW rechts neben die 52. KW geschrieben?
Heißt das Blatt richtig
YDT Final Inspection oder
YTD Final Inspection ?
Bei den YTD-Blättern steht die wk01 immer in Zeile 9, außer im Blatt 'YTD Output' (Zeile 8). Absicht?
Soll vor dem Übertragen der Daten von 'KPI Figures' auf die andere Blätter geprüft werden, ob alle Daten eingegeben sind?
Wenn eine Zahl fehlt, was soll dann in das YTD-Blatt geschrieben werden? "" oder #NV?
Du hast im Code "xlPasteValuesAndNumberFormats" stehen. Welchen Sinn hat die Übertragung der NumberFormats
für einzelne Zellen? Sollten die Zellen einer Zeile im Zielblatt nicht ein einheitliches Format haben?
Wegen der relativ fixen Struktur der YTD-Blätter muss man keine KW suchen, man kann Zeile und Spalte berechnen.
Hier mal ein erster Codevorschlag:

Option Explicit
Sub Ueber()
Dim intW As Integer, lngZ As Long, lngS As Long
With Sheets("KPI Figures")
intW = .Cells(5, 4)                 ' Woche
lngS = 3 + intW + 26 * (intW > 26)  ' in Spalte - gilt für alle Ausgabeblätter
lngZ = 9 - 4 * (intW > 26)          ' in Zeile
Sheets("YTD Output").Cells(lngZ, lngS).Resize(2) = .Cells(14, 7).Resize(2).Value
lngZ = 10 - 8 * (intW > 26)         ' in Zeile
Sheets("YDT Final Inspection").Cells(lngZ, lngS).Resize(4) = _
.Cells(22, 7).Resize(4).Value
lngZ = 10 - 4 * (intW > 26)         ' in Zeile
' oder:                                                   ' Suche nach wk01 oder wk27 in Sp. D
lngZ = Application.Match("wk" & Format(1 - 26 * (intW > 26), "00"), _
Sheets("YTD Missing Parts").Columns(4), 0) + 1
Sheets("YTD Missing Parts").Cells(lngZ, lngS).Resize(2) = .Cells(22, 14).Resize(2).Value
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Codevorschlag
26.08.2014 17:13:27
Joachim
Hallo Erich,
erstmal moechte ich mich entschuldigen, dass ich erst jetzt zurueckschreibe, ich hatte letzten Tage leider keine Moeglichkeit auf Internetzugriff.
Vielen, vielen Dank fuer deinen Codevorschlag!!! Er funktioniert hervorragend und erfuellt genau meine Anforderungen.
Zu deinen Fragen.
Die 52 Kalenderwochen muessten reichen, da ab Weihnachten bis nach der ersten Woche des neuen Jahres keine Daten gesammelt werden. Aber wenn es doch mal zu dem Fall kommen sollte, dass Daten fuer die 53 Kalenderwoche gesammelt werden, dann wuerde diese neben die KW 52 geschrieben werden.
Das Blatt sollte "YTD Final Inspection" heissen, ich habe da aus Versehen einen Buchstabendreher drin gehabt.
Habe jetzt alle Blaetter auf Zeile 8 angeglichen. Das war keine Absicht und hatte auch keine bestimmte Bedeutung, bin da beim Erstellen wahrscheinlich um eine Zeile verrutscht.
Ich benoetige keine Ueberpruefung der Dateneingabe, da alle Daten im Blatt "KPI Figures" automatisch aus einem anderen Blatt (in das taeglich alle Daten der Produktionslinie eingetragen werden) uebertragen werden.
Das mit "xlPasteValuesAndNumberFormats" habe ich aus einem anderen Code aus einem Forum uebernommen, aber jetzt nach deiner Erklaerung sehe ich auch, dass ich das wirklich nicht brauche.
Also nochmals vielen Dank fuer deine Bemuehungen, du hast mir echt weitergeholfen!!
Falls sich widererwartend in naher Zukunft doch noch Ergaenzungen bei den Blaettern oder dem Code ergeben sollten, wuerde ich es toll finden, wenn ich nochmals auf dich zurueckkommen darf.
Viele Gruesse und noch einen schoenen Tag!
Joachim
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige