Supportnet / Forum / Tabellenkalkulation
Makro erstellen, das wie sverweis arbeitet, aber nicht liest sondern schreibt ?
Frage
Langes Subject kurze Lösung ? Hoffen wir das Beste *g*.
Also, sagen wir mal ich habe zwei verschiedene Dateien. Eine davon ist schön tabellarisch nach Datum aufgebaut. Die andere wird täglich im Inhalt geändert. Wenn jetzt in der zweiten alle Änderungen gemacht sind, würde ich gerne die Eintragungen per Klick auf ein Makro in die erste tabellarische Datei übertragen, und zwar natürlich in die Zeile mit dem richtigen Datum.
Meine bisherigen Makro-Erfahrungen bestehen darin, mit Aufzeichnen zu arbeiten, aber das funktioniert hier nicht ganz so, wie ich mir das vorstelle, es hakt eben an diesem Quasi-sverweis, der auch nach dem richtigen Datum guckt und dann in die entsprechende Spalte schreibt.
Ich bin sicher, das Ihr mir helfen könnt. Die Frage ist nur, habe ich mich verständlich machen können ?
Ach ja, WinXPprof und ExcelXP sind am Werke.
Vielen Dank schonmal
Das PHAntom
Antwort 1 von want2cu
Hallo Phantom,
ich gehöre eher nicht zur MAKRO/VBA-Fraktion. Aber ich würde die Fragestellung auch gerne verstehen.
Was sollgenau kopiert werden? Was ist in der ersten Tabelle denn schon an Inhalten vorhanden, was weiterhin bestehen bleiben soll?
Könnte man die Sache ggf. auch durch eine einfache "Kopie" mit anschließender Sortierung nach dem Datum erreichen?
Woran hakt dein Makro denn genau?
Bitte Feedback ;-)
CU
want2cu
ich gehöre eher nicht zur MAKRO/VBA-Fraktion. Aber ich würde die Fragestellung auch gerne verstehen.
Was sollgenau kopiert werden? Was ist in der ersten Tabelle denn schon an Inhalten vorhanden, was weiterhin bestehen bleiben soll?
Könnte man die Sache ggf. auch durch eine einfache "Kopie" mit anschließender Sortierung nach dem Datum erreichen?
Woran hakt dein Makro denn genau?
Bitte Feedback ;-)
CU
want2cu
Antwort 2 von PHAntom
Okay, also wenn jemand sie schon nicht versteht, nur weil er nicht zu irgendeiner Fraktion gehört, dann habe ich mich offensichtlich nicht klar ausgedrückt.
Also die erste tabellarische Datei hat Zeilen vom 1.1.2003 bis zum 31.12.2003, das wird aber dann je nach Anforderung auch noch erweitert. Dazu dann Spalten mit Mitarbeiteranzahlen in verschiedenen Schichten und verschiedenen Vertragsstunden (7,5/6/5...). Dazu noch Leistung und Arbeitsaufkommen und noch ein paar Sachen. Im Moment werden die Sachen immer von Hand eingetragen und die bisherigen Einträge sollen natürlich erhalten bleiben.
In der zweiten Datei sind die gleichen Einträge und noch einige mehr, aber ich brauch halt nicht alle. Nur ist die zweite Datei nicht tabellarisch aufgebaut sondern (wie heisst sowas eigentlich) öh, kreuz und quer.
Das mit der Sortierung ist aber vielleicht gar keine schlechte Idee. Vielleicht kann ich ja im Makro irgendwie einbauen, das er die Datei 1 so sortiert, das das aktuelle Datum oben ist und dann einfach seine Werte in die zweite Spalte einträgt und dann wieder normal sortiert. An die Möglichkeit hab ich noch gar nicht gedacht...
Also Danke schonmal, ich mach mich ans ausprobieren.
Das PHAntom
Also die erste tabellarische Datei hat Zeilen vom 1.1.2003 bis zum 31.12.2003, das wird aber dann je nach Anforderung auch noch erweitert. Dazu dann Spalten mit Mitarbeiteranzahlen in verschiedenen Schichten und verschiedenen Vertragsstunden (7,5/6/5...). Dazu noch Leistung und Arbeitsaufkommen und noch ein paar Sachen. Im Moment werden die Sachen immer von Hand eingetragen und die bisherigen Einträge sollen natürlich erhalten bleiben.
In der zweiten Datei sind die gleichen Einträge und noch einige mehr, aber ich brauch halt nicht alle. Nur ist die zweite Datei nicht tabellarisch aufgebaut sondern (wie heisst sowas eigentlich) öh, kreuz und quer.
Das mit der Sortierung ist aber vielleicht gar keine schlechte Idee. Vielleicht kann ich ja im Makro irgendwie einbauen, das er die Datei 1 so sortiert, das das aktuelle Datum oben ist und dann einfach seine Werte in die zweite Spalte einträgt und dann wieder normal sortiert. An die Möglichkeit hab ich noch gar nicht gedacht...
Also Danke schonmal, ich mach mich ans ausprobieren.
Das PHAntom
Antwort 3 von want2cu
Hallo PHAntom,
zur Erklärung mit der "Fraktion": Ich gehöre leider immer noch nicht zu denen, die sich mit Makros und VBA gut auskennen. Davon gibt es aber hier im SN so einige. Das nur zur KLarstellung meiner einleitenden Bemerkung.
Ich gehöre eher zu denen, die sich mit Formeln besser auskennen.
Von daher gesehen hätte ich folgenden LÖsungsansatz:
Wenn du in die erste Tabelle doch Daten aus der zweiten Tabelle einfügen willst, warum kann man das nicht mit SVERWEIS lösen?
Wenn das Datum in jeder Tabelle nur jeweils ein einziges Mal vorkommt, dann ist dies doch das ideale Vergleichskriterium für SVERWEIS.
Wenn du dann in der Tabellenspalte der ersten Tabelle folgende Funktion schreibst:
=sverwerweis(Vergleichszelle;Tabelle2!Datenbereich;spaltennummer;falsch)
dann müßte die Sache doch eigentlich auch ganz ohne Makro gehen.
Vielleicht raffe ich es ja auch nihct so ganz. Du scheinst doch die Funktion SVERWEIS zu kennen. Welche Gründe sprechen dagegen, diese Funktion zu nutzen?
Und wenn in der Tabelle 1 später keine Formeln mit Verweisen stehen sollen, dann ist das doch auch (ggf. nachträglich) sehr einfach lösbar durch Kopieren/Werte einfügen.
Und wenn es daran hapern sollte, dass die zu übertragenden Werte nicht rechts, sondern links neben der Datumsspalte stehen (und du die Spalten nicht umstellen kannst/willst) istdas auch mit den Funktionen INDEX und VERGLEICH machbar.
Gib doch bitte mal ein Feedback, wie es aussieht oder - wenn du magst - schick mir eine abgespeckte Beispieltabelle. Ich würde dann versuchen, die Sache mittels Formeln zu lösen. ;-)
CU
want2cu
zur Erklärung mit der "Fraktion": Ich gehöre leider immer noch nicht zu denen, die sich mit Makros und VBA gut auskennen. Davon gibt es aber hier im SN so einige. Das nur zur KLarstellung meiner einleitenden Bemerkung.
Ich gehöre eher zu denen, die sich mit Formeln besser auskennen.
Von daher gesehen hätte ich folgenden LÖsungsansatz:
Wenn du in die erste Tabelle doch Daten aus der zweiten Tabelle einfügen willst, warum kann man das nicht mit SVERWEIS lösen?
Wenn das Datum in jeder Tabelle nur jeweils ein einziges Mal vorkommt, dann ist dies doch das ideale Vergleichskriterium für SVERWEIS.
Wenn du dann in der Tabellenspalte der ersten Tabelle folgende Funktion schreibst:
=sverwerweis(Vergleichszelle;Tabelle2!Datenbereich;spaltennummer;falsch)
dann müßte die Sache doch eigentlich auch ganz ohne Makro gehen.
Vielleicht raffe ich es ja auch nihct so ganz. Du scheinst doch die Funktion SVERWEIS zu kennen. Welche Gründe sprechen dagegen, diese Funktion zu nutzen?
Und wenn in der Tabelle 1 später keine Formeln mit Verweisen stehen sollen, dann ist das doch auch (ggf. nachträglich) sehr einfach lösbar durch Kopieren/Werte einfügen.
Und wenn es daran hapern sollte, dass die zu übertragenden Werte nicht rechts, sondern links neben der Datumsspalte stehen (und du die Spalten nicht umstellen kannst/willst) istdas auch mit den Funktionen INDEX und VERGLEICH machbar.
Gib doch bitte mal ein Feedback, wie es aussieht oder - wenn du magst - schick mir eine abgespeckte Beispieltabelle. Ich würde dann versuchen, die Sache mittels Formeln zu lösen. ;-)
CU
want2cu
Antwort 4 von PHAntom
Eine Sache, warum ich nicht mit sverweis arbeiten möchte (was in der Tat zumindest ohne größere technische Probleme möglich wäre) ist, das in der zweiten Datei für jeden Tag ein eigenes Tabellenblatt existiert (das aber in sich immer genau gleich aufgebaut ist). Beziehungsweise eben erst etwa eine Woche im voraus erstellt wird. Durch diesen verweis auf verschiedene Tabellenblätter hab ich aber das Problem, das ich dann meines Wissens nach nicht einfach einmal in eine Zeile die nötige Formel schreibe und dann runterkopiere, sondern eben in jeder Zeile den Verweis auf das nächste Tabellenblatt ändern müsste. Du glaubst gar nicht, wie froh ich wäre, wenn Du mir eine einfach Möglichkeit nennen würdest, wie das doch ohne so einen großen Schreibaufwand möglich wäre.
Desweiteren ist ja leider die zweite Datei eben nicht tabellarisch aufgebaut. Das Datum steht irgendwo oben rechts und darunter stehen dann sowohl untereinander als auch nebeneinander benötigte Werte.
Ach so, das mit den Fraktionen hatte ich schon verstanden. Es klingt immer nur so nach Politik *g*.
Falls ich mich jetzt auch wieder unklar ausgedrückt haben sollte, schicke ich Dir mal ein Beispiel.
dankenderweise
Das PHAntom (Juchuu ! Er hats groß geschrieben *g*)
Desweiteren ist ja leider die zweite Datei eben nicht tabellarisch aufgebaut. Das Datum steht irgendwo oben rechts und darunter stehen dann sowohl untereinander als auch nebeneinander benötigte Werte.
Ach so, das mit den Fraktionen hatte ich schon verstanden. Es klingt immer nur so nach Politik *g*.
Falls ich mich jetzt auch wieder unklar ausgedrückt haben sollte, schicke ich Dir mal ein Beispiel.
dankenderweise
Das PHAntom (Juchuu ! Er hats groß geschrieben *g*)
Antwort 5 von PHAntom
Ich merk gerade, das in der zweiten Tabelle eigentlich gar kein Datum steht. Das Datum ist nur als Name des Tabellenblatts hinterlegt und dann auch nur in dem Format 24.04. also ohne Jahreszahl und eigentlich nicht wirklich hilfreich. :(
Das PHAntom, erschrocken
Das PHAntom, erschrocken
Antwort 6 von newbman
hmm hmm weiß nicht ob ich das richtig versatnden hab aber :
makro-aufzeichnen vorschlag:
füge heute() in BEIDE tabellen ein (eigene spalte)
dann steht in sagen wir spalte a
zelle 1 das aktuelle datum ...
haha nun der kleine kniff :du filterst
tabelle2! nach datum;aufsteigend
dann wird ja immer das aktuelle datum in zeile 1 stehen
und da du jetzt eine "feste" zeile zum kopieren also sagst du makro es soll diese zeile in deine tabelle1! kopieren (auf knopf druck oder automatisch)
hoffe du verstehst was ich bemüht bin zu erklären unddas es überhaupt das war was du wissen wolltest
gruß newbman
makro-aufzeichnen vorschlag:
füge heute() in BEIDE tabellen ein (eigene spalte)
dann steht in sagen wir spalte a
zelle 1 das aktuelle datum ...
haha nun der kleine kniff :du filterst
tabelle2! nach datum;aufsteigend
dann wird ja immer das aktuelle datum in zeile 1 stehen
und da du jetzt eine "feste" zeile zum kopieren also sagst du makro es soll diese zeile in deine tabelle1! kopieren (auf knopf druck oder automatisch)
hoffe du verstehst was ich bemüht bin zu erklären unddas es überhaupt das war was du wissen wolltest
gruß newbman
Antwort 7 von Guenter
Hallo PHAntom,
für ein Makro ist es m.E. nicht wichtig, ob das Datum in der Tabelle steht oder als Name des Arbeitsblatts vorhanden ist.
Deshalb gehe ich davon aus, das das Problem mit einem Makro lösbar wäre.
Wenn ich es recht verstanden habe, willst Du Daten aus verschiedenen Tabellenblättern in eine "Mastertabelle" übertragen und zwar nach dem Datum in der "Mastertabelle" aus den entsprechenden Tabellenblättern mit Datum-Namen.
Dazu sollte das Problem in möglichst kleine Schritte zerlegt werden, z.B.
zuerst den Namen des Tabellenblatts als Parameter übergeben:
Dann die einzelnen Zellen in der Tabelle, die übertragen werden sollen, in Parameter schreiben. Wenn die Werte in A1 und A2 stehen:
Dann die Mastertabelle öffnen oder aktivieren (wenn bereits geöffnet), nach DatumName suchen und die Werte in die entsprechenden Zellen eintragen.
Wenn Du Dich ein wenig mit Makros auskennst, sollte es kein Problem sein.
Gruß
Günter
für ein Makro ist es m.E. nicht wichtig, ob das Datum in der Tabelle steht oder als Name des Arbeitsblatts vorhanden ist.
Deshalb gehe ich davon aus, das das Problem mit einem Makro lösbar wäre.
Wenn ich es recht verstanden habe, willst Du Daten aus verschiedenen Tabellenblättern in eine "Mastertabelle" übertragen und zwar nach dem Datum in der "Mastertabelle" aus den entsprechenden Tabellenblättern mit Datum-Namen.
Dazu sollte das Problem in möglichst kleine Schritte zerlegt werden, z.B.
zuerst den Namen des Tabellenblatts als Parameter übergeben:
DatumName = ActiveSheet.Name
Dann die einzelnen Zellen in der Tabelle, die übertragen werden sollen, in Parameter schreiben. Wenn die Werte in A1 und A2 stehen:
Wert1 = [a1].value
Wert2 = [a2].value
Dann die Mastertabelle öffnen oder aktivieren (wenn bereits geöffnet), nach DatumName suchen und die Werte in die entsprechenden Zellen eintragen.
Wenn Du Dich ein wenig mit Makros auskennst, sollte es kein Problem sein.
Gruß
Günter
Antwort 8 von want2cu
Hallo PHAntom,
wenn Günter mit von der Partie ist, wird es bestimmt eine Super-Makro-Lösung, da bin ich ganz sicher.
Da ich das bekanntermaßen aber nicht kann und "aus anderen Gründen" eher mit Formeln arbeite, würde mich rein aus "excelianischer Neugierde" schon interessieren, ob es eine alternative Lösung per Formel gibt.
Also wenn du magst, schick mir doch bitte mal eine abgespeckte Beispielversion deiner Tabellen. Ich würde schon gerne mal mein Glück versuchen (Günters Makrolösung wird sicherlich der elegantere und schnellere Lösungsweg sein).
CU
want2cu
wenn Günter mit von der Partie ist, wird es bestimmt eine Super-Makro-Lösung, da bin ich ganz sicher.
Da ich das bekanntermaßen aber nicht kann und "aus anderen Gründen" eher mit Formeln arbeite, würde mich rein aus "excelianischer Neugierde" schon interessieren, ob es eine alternative Lösung per Formel gibt.
Also wenn du magst, schick mir doch bitte mal eine abgespeckte Beispielversion deiner Tabellen. Ich würde schon gerne mal mein Glück versuchen (Günters Makrolösung wird sicherlich der elegantere und schnellere Lösungsweg sein).
CU
want2cu

