Autor
|
Thema: Tabellenblatt über Name ansteuern (3061 mal gelesen)
|
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 Office 2007 W7-SP1
|
erstellt am: 14. Nov. 2011 16:23 <-- editieren / zitieren --> Unities abgeben:
Moin! Ich mache monatliche Stundenabrechnungen mit Excel. Von mehreren Kollegen kommt je ein xls, in dem es für jeden Monat ein Tabellenblatt gibt, auf dem auch schon für jedes Projekt eine motaliche Summe gebildet wird. In der Zusammenrechnung habe ich auch ein Tabellenblatt für jeden Monat und ziehe darin aus den einzelnen Mitarbeiter.xls von dem zugehörigen Monatsblatt die Summen für jedes Projekt zusammen. Da im Laufe des Jahres immer neue Projekte hinzukommen, hat es sich bewährt, jeden Monat neu das Tabellenblatt vom Vormonat zu kopieren. Darin muss ich dann aber immer die Bezüge zum monatlichen Tabellenblatt neu setzen. Da dachte ich mir heute (endlich mal), dass das doch mit der Verwendung einer benannten Zelle gehen müsste, in der man dann nur 1x den aktuellen Monat ändern muss. Nur schaff ich das nicht Geht das überhaupt, und wenn ja, wie muss ich das richtig formulieren? ------------------ Roli www.Das-Entwicklungsbuero.de [Diese Nachricht wurde höchstwahrscheinlich nach ihrer Erstellung von Doc Snyder noch ein Mal editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 14. Nov. 2011 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Zitat: Original erstellt von Doc Snyder:
Geht das überhaupt, und wenn ja, wie muss ich das richtig formulieren?
Versuch's mal via Zelle()&Indirekt()und ner String-Verkettung: Code: =ZELLE("inhalt";INDIREKT(A1 & "!A1"))
Wobei dann in A1 (dieses Blattes) nur noch der Name des gewünschten Blattes steht. Kommst Du damit weiter?------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 Office 2007 W7-SP1
|
erstellt am: 14. Nov. 2011 16:52 <-- editieren / zitieren --> Unities abgeben:
Äh, nein. Ich sehe noch nicht, wo ich das einbauen muss. Wie mir scheint, ist aber auch mein Anliegen noch unklar. Hier mal ein beispielhafter Zelleintrag, wie ich ihn bisher habe: ='[Stunden Mustermann Erika 2011.xls]Mai'!$B2 Die ganze Spalte runter (über ca. 25 Einzelprojekte) und in mehreren Spalten (für alle Kollegen) soll nun aus "Mai" "Jun" werden, und das würde ich gern durch Nutzung einer benannten Zelle in dem kopierten Tabellenblatt erledigen. Unmittelbar nach dem Kopieren stünde darin dann "Mai" und für die Anpassung auf Juni müsste ich dann dort nur noch 1x "Jun" eintragen. (Ich könnte auch diesen einen Eintrag ändern und dann mit Herunterziehen in alle gewünschten Zellen kopieren, aber da sind einige Lücken und spezielle Formate drin, die dann wieder viel Nacharbeit erfordern, so dass das auch nicht so praktisch wäre.) ------------------ Roli www.Das-Entwicklungsbuero.de [Diese Nachricht wurde von Doc Snyder am 14. Nov. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 14. Nov. 2011 17:37 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
OK, dann vielleicht so? Code: =INDIREKT("'[Stunden Mustermann Erika 2011.xls]" &$A$1&"'!$B2")
Wobei Du den Namens des gesuchten sheets nun in A1 des sheets einträgst, in dem die Formel liegt. Soll heißen, Du baust alle Formeln im Blatt so um, dass die sich nicht mehr auf "MAI" od. "JUN" beziehen, sondern auf den Inhalt der Zelle A1, so dass Du also nur noch diese ändern muß. Bitte die Einschränkung beachten, dass INDIREKT() nur auf geöffneten Mappen funktioniert, Abhilfe gibt es hier: >> klick << Jetzt besser oder hab ich immer noch ein Verständnisproblem? Nachtrag: damit wir auch die 08/15-halb-zu-Fuß-Lösung nicht unerwähnt lassen: Suchen&Ersetzen funktioniert übrigens auch innerhalb von Formeln, man muß mur evtl. geschicktere (längere/eindeutigere) Suchbegriffe hernehmen, damit nicht aus Versehen falsche Teile ersetzt werden... ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 Office 2007 W7-SP1
|
erstellt am: 14. Nov. 2011 18:09 <-- editieren / zitieren --> Unities abgeben:
Ja und Nein - So ist's besser und das Problem ist gelöst. Vom Ansehen her ist das nun genau das, was ich suchte. Verstehen tu ich's, muss es jetzt nur noch umsetzen. Diese Indirekt-Semantik ist mir noch nicht vertraut. Danke! Die freundlicherweise gleich mit erwähnte Einschränkung ist mir sogar willkommen! So bekomme ich eine Warnung, wenn ich nicht alle beteiligten Dateien öffne, und das ist gut so, denn nur wenn alle beteiligten Dateien geöffnet sind, kann ich auch ungestraft neue Zeilen für neue Projekte einfügen, und das muss ja auch immer wieder mal sein. Und bei meinen Arbeitszeitgewohnheiten ist das auch kein Problem, die Dateien aller Kollegen zu öffnen. Ciao ------------------ Roli www.Das-Entwicklungsbuero.de [Diese Nachricht wurde höchstwahrscheinlich nach ihrer Erstellung von Doc Snyder noch ein Mal editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 Office 2007 W7-SP1
|
erstellt am: 14. Nov. 2011 18:46 <-- editieren / zitieren --> Unities abgeben:
Sorry, das geht doch noch nicht wie gewünscht. Jetzt wird die Zeile beim Kopieren nach unten nicht mehr automatisch weitergezählt - logisch (wenn man's weiß ), ist ja nur ein String. Und was nun? Feste oder zeilenbezogene Zahlen kann ich da nicht brauchen, denn ein aktiver und automatisch nachgeführter Zeilenzähler ist wichtig bei dem bereits erwähnten Einfügen neuer oder Löschen obsoleter Zeilen in den Dateien. ------------------ Roli www.Das-Entwicklungsbuero.de [Diese Nachricht wurde von Doc Snyder am 14. Nov. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 14. Nov. 2011 19:05 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
hmm. >> Jetzt wird die Zeile beim Kopieren nach unten nicht mehr automatisch weitergezählt Feststehenbleibenden Bezug willste also nicht. >> Feste oder zeilenbezogene Zahlen kann ich da nicht brauchen, denn ein akltiver und automatisch nachgeführter Zeilenzähler ist wichtig bei dem bereits erwähnten Einfügen neuer oder Löschen obsoleter Zeilen in den referenzierten Dateien. Einen sich dynamisch anpassenden aber auch nicht. Maoam gibt's irgendwie noch nich als AddOn Sorry, ich fürchte, das Verständnisproblem ist wieder da. Ist dieses dann nicht evtl. via Hilfszellen bzw. Änderung des festen Stringteils ("'!$B2") in eine dynamische Ersatzformel möglich? Wenn Du schon den Blattnamen in eine Hilfszelle setzt, kannst Du das doch evtl. auch mit einer Basiszelle als Ausgangspunkt für weitere Formeloperationen. Und dann evtl. noch mit Deinem eigenen Ansatz: Namen. Schau mal wie weit Du mit solchen aufbauenden Stringersatzteilen kommst, ansonsten hätte ich gerne ne für's Forum aufbereitete Beispieldatei, das wird mir sonst zu anstrengend. Wäre u.U. VBA eine Alternative? Oder soll es reine Formellösung bleiben? Andererseits, Du hast es ja nicht unbedingt eilig, morgen kommt bestimmt noch wer mit was Elegantem vorbei. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 Office 2007 W7-SP1
|
erstellt am: 14. Nov. 2011 19:33 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von runkelruebe: Einen sich dynamisch anpassenden aber auch nicht.
Doch doch, wenn ich bei meinen alten, einfachen Formeln Zeilen einfüge oder lösche, passen sich die Zeilenindizes alle automatisch der Verschiebung an - sofern alle Dateien gemeinsam geöffnet sind. Eine Hilfsspalte allerdings könnte ich mir vorstellen. Die würde sich bei den Zeilenoperationen dann gewünscht anpassen, und in der idirekt-Klammer zapfe ich dann diese Werte dann an. Ist das so richtig gedacht? Wie eilig ich das habe, habe ich aus Höflichkeit verschwiegen Ich weiß doch, wie das ankommt, wenn man in einem Forum schreibt: "habs eilig, muss heute noch fetig werden" benutzt. Es ist aber tatsächlich kein Problem, die Lösung (falls es eine so multingeniale geben sollte, wie ich das will) zu vertagen. Das Problem kommt ja für jeden Monat neu. Das mit der Beispieldatei sehe ich ein, aber das sind halt fast überall vertrauliche Daten, und da muss ich auch erst gründlich basteln, ehe ich das rausgeben kann. VBA benutze ich bei Inventor, hab ich aber für Excel noch nie verwandt. Würde das hier helfen? 1x Makro laufen lassen, um den Monat anzupassen, fände ich ja völlig OK. ------------------ Roli www.Das-Entwicklungsbuero.de [Diese Nachricht wurde höchstwahrscheinlich nach ihrer Erstellung von Doc Snyder noch ein Mal editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 14. Nov. 2011 20:01 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Hallo Roland, na dann - auf gehts! Mal ein erster kleiner Vorschlag/Ansatz zum Testen: Code: Sub Monatswechsel() Dim RE As Object, cell As Range Set RE = CreateObject("vbscript.regexp") RE.Pattern = "(.*\]).*?('.*\d+)" 'Application.DisplayAlerts = 0 For Each cell In Selection If RE.test(cell.Formula) Then cell = RE.Replace(cell.Formula, "$1" & Range("A1") & "$2") Next 'Application.DisplayAlerts = 1 End Sub
Die zu ersetzenden Zellen bzw. Spalten sollten selektiert sein, ersetzt wird nur wenn das Muster passt. Ersatz sei mal in A1. lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 14. Nov. 2011 20:15 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Wie eilig ich das habe, habe ich aus Höflichkeit verschwiegen Ich weiß doch, wie das ankommt, wenn man in einem Forum schreibt: "habs eilig, muss heute noch fetig werden" benutzt. Oh ja, wir lieben das. Wir haben hilfreiche links für solche Anfragen gesammelt Also nochmal zum Formel-Ansatz (ich sehe, trekki war auch schon fleißig): Man kann mittels INDEX() und anderen Verweisfunktionen auch auf Namen zugreifen und die dann mit Indirekt aufbauen. Hach, wo ist eigentlich der 3. Moderator, wenn man ihn mal für's Fachliche braucht? scnr ;-) Rest dann zur Dezemberabrechnung, bis dahin hast Du auch die Beispieldatei fertig ;-) ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 Office 2007 W7-SP1
|
erstellt am: 14. Nov. 2011 20:19 <-- editieren / zitieren --> Unities abgeben:
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 14. Nov. 2011 20:26 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Zitat: Original erstellt von Doc Snyder:
Geht das mit einem Button dazu so wie bei Inventor?
Ja. Blende Dir die Karte 'Entwicklertools' mit im Ribbon ein (so noch nicht geschehen) > Gruppe Steuerlemente > Einfügen > ActiveX-Gruppe (die untere) > erstes Symbol (=button) RMT > Code anzeigen Aufruf der Sub Code: Private Sub CommandButton1_Click() Call test End Sub
Entwurfsmodus abschalten ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 Office 2007 W7-SP1
|
erstellt am: 14. Nov. 2011 21:59 <-- editieren / zitieren --> Unities abgeben:
Nancys Code tut das, was er soll, auch mit ganzen Tabellen, alles brav, aber ich krieg ihn nur mit F5 im Editor zum Laufen. Button habe ich geschafft zu erstellen, aber das tut's bei mir nicht. Ich habe statt "Call Test" "Call Monatwechsel" geschrieben, aber das geht nicht. Code direkt dorthin kopiert geht auch nicht. Da fehlt mir wohl noch was. Außerdem wohnt der Button, wie mir scheint, auf dem Tabellenblatt, das wäre zwar kein Hindernis, denn er würde so immer mit kopiert, aber irgendwie unelegant fände ich das schon. Ist mir aber für heute alles egal. Feierabend jetzt! ------------------ Roli www.Das-Entwicklungsbuero.de [Diese Nachricht wurde höchstwahrscheinlich nach ihrer Erstellung von Doc Snyder noch ein Mal editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 15. Nov. 2011 08:54 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Moin Roland, die Anpassung des ribbons ist in Excel leider nicht so schön einfach wie z.B. in ACAD (und Inventor?). Ich denke, nachdem Du >> dieses << durch hast, kannst Du wahrscheinlich mit dem Aufruf via button auf sheet oder ALT+F8 (für den 'Makromanager' ganz gut leben Nochmal zum Aufruf selbst: Leseempfehlung: >> klick << Nachtrag: Und auf Schreibfehler achten! (Zitat: "Ich habe statt "Call Test" "Call Monatwechsel" geschrieben, aber das geht nicht.") -> Nancys Sub heißt Monatswechsel... ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 15. Nov. 2011 18:02 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Hi nochmal, Rübe , das mit dem 's' war mir gar nicht aufgefallen. Ich weiss nicht wie es unter 2007 ausschaut, gibts da in den 'Entwicklertools' nicht auch ein Menü mit dem 'Ausführen'-Button (grüner Pfeil?), also analog Alt+<F8>, wenn man schonmal das Mäuschen in der Hand hat?;-) Roland, wenn Du das Makro wagemutig über ganze Tabellen jagst, dann nimm lieber dies:
Code: re.pattern = "(='\[Stunden.*?\.xls\]).*?('!\$?\D+\d+)"
Das grenzt dann doch etwas mehr ein;-)lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 Office 2007 W7-SP1
|
erstellt am: 15. Nov. 2011 18:31 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von startrek: ...wagemutig über ganze Tabellen
Nein, nein, so wagemutig bzw. bekloppt bin ich dann doch nicht. Ich mache das genau wie Du geschrieben hast: Bereich markieren und dann Dein Makro laufen lassen. Aber die genauere Spezifizierung schau ich mir auch noch an! Das mit dem Button lass ich erst mal ruhen; Alt-F8 finde ich OK. Wie schon gesagt brauche ich das ja nicht täglich. ------------------ Roli www.Das-Entwicklungsbuero.de [Diese Nachricht wurde höchstwahrscheinlich nach ihrer Erstellung von Doc Snyder noch ein Mal editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |