Autor
|
Thema: Jänner=Januar? Rechnen mit Monaten (3916 mal gelesen)
|
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003 Compass2000 in (fast) allen Ausbaustufen: Jobserver, ACM, Replikator, DBQ-Programmierung. Programmierung, Wartung und Administration von MSSQL2000-Datenbanken. Grundlegende Kenntnisse in AutoLisp-Programmierung.
|
erstellt am: 03. Nov. 2004 08:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Excel-Profis, habe ein ganz spezielles Problem: Ausganssituation: Ich habe 12 Tabellen, pro Monat eine, die mit dem Monatsnamen benannt sind. Also Jänner, Februar etc. In Zelle A1 steht jeweils der Monatsnamen und das Jahr, z.B. "Jänner 2005". Der Monatsname wird per Formel mit dem Namen des Arbeitsblatts belegt, das Jahr wird aus einer anderen Tabelle ausgelesen. Die Formel sieht dann so aus: =TEIL(ZELLE("dateiname";A1);FINDEN("]";ZELLE("dateiname";A1))+1;255) & " " & Stammdaten!$D$1 Zielsetzung: Ich muss im Rahmen von Berechnungen immer wieder den aktuellen Monat vergleichen, in dem ich mich befinde. Dabei habe ich immer wieder Vergleichswerte drin. Dieser Teil der Formel sieht z.B. so aus: =WENN(MONAT($A$A)=MONAT($H$3);...) Mein Problem: Mein Problem ergibt sich im Arbeitsblatt "Jänner". Die Funktion MONAT(A1) ergibt 1. Allerdings nur, wenn die Ländereinstellungen stimmen, in meinem Fall "Deutsch(Österreich)". Sobald ich auf "Deutsch(Deutschland)" umstelle, ergibt die Formel einen Fehler. In diesem Fall wird "Jänner" nämlich nicht als Monat erkannt, es müsste dann "Januar" heißen. Wie kann ich das am besten lösen? Einen Ansatz habe ich schon, aber damit werden die Formeln unnötig lang und unübersichtlich. Ich prüfe nämlich innerhalb der Formel, ob "Jänner" einen Fehler ergibt, wenn ja, ersetze ich "Jänner" durch "Januar". Die Funktion MONAT(A1) sieht dann so aus, damit 1 rauskommt: =WENN(ISTFEHLER(MONAT(A1));MONAT(ERSETZEN(A1;1;LÄNGE(A1)-5;"Januar"));MONAT(A1)) Besten Dank und ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gazelle Mitglied CAD
Beiträge: 155 Registriert: 15.03.2002
|
erstellt am: 03. Nov. 2004 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für WolfgangE
|
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003 Compass2000 in (fast) allen Ausbaustufen: Jobserver, ACM, Replikator, DBQ-Programmierung. Programmierung, Wartung und Administration von MSSQL2000-Datenbanken. Grundlegende Kenntnisse in AutoLisp-Programmierung.
|
erstellt am: 03. Nov. 2004 10:42 <-- editieren / zitieren --> Unities abgeben:
Nicht ganz, aber der Rechner interpretiert das so. Mach mal folgenden Versuch: Schreib in Zelle A1: =MONAT("Jänner 2004") und in Zelle A2: =MONAT("Januar 2004") Und dann stell die Ländereinstellungen um. Einmal tritt der Fehler in A1 auf, bei der anderen Einstellung in A2. ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 03. Nov. 2004 13:56 <-- editieren / zitieren --> Unities abgeben: Nur für WolfgangE
Hallo Wolfgang, ist Dir zwar keine Hilfe, aber IMHO ist das mit dem String etwas unglücklich. Unter VBA gibts zwar MonthName(), welches Dir einen solchen liefert, das hilft Dir glaube aber auch nicht weiter. Und =Monat("Maerz 04") geht leider auch nicht, sonst hätt man können auf Ja für Januar & Jaenner prüfen. Das einfachste wären wohl Blattnamen von 1 bis 12 ;-)) lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003 Compass2000 in (fast) allen Ausbaustufen: Jobserver, ACM, Replikator, DBQ-Programmierung. Programmierung, Wartung und Administration von MSSQL2000-Datenbanken. Grundlegende Kenntnisse in AutoLisp-Programmierung.
|
erstellt am: 03. Nov. 2004 14:07 <-- editieren / zitieren --> Unities abgeben:
Hi Nancy, danke erst mal für die Antwort. Hast recht, mit 1 - 12 als Beschriftung gings wesentlich einfacher. Aufgrund der Anwenderfreundlichkeit sollten aber die Monatsnamen erhalten bleiben. Bekommen immerhin alle Mitarbeiter im Betrieb. Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 03. Nov. 2004 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für WolfgangE
Wolfgang, da fiele mir jetzt nur diese VBA-Krücke ein, ist aber nicht aus[tria]getestet ;-) : Code:
Private Sub Workbook_Open() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.Name Like "J*n*r" Then If MonthName(1) <> ws.Name Then ws.Name = MonthName(1) Exit For End If Next End Sub
Naja, nicht ganz im Sinne des Erfinders, vor allem wenn Du die Mappe 'makrofrei' haben willst, aber leider keine andre Idee grade ... lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003 Compass2000 in (fast) allen Ausbaustufen: Jobserver, ACM, Replikator, DBQ-Programmierung. Programmierung, Wartung und Administration von MSSQL2000-Datenbanken. Grundlegende Kenntnisse in AutoLisp-Programmierung.
|
erstellt am: 03. Nov. 2004 15:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Nancy, stimmt, die Arbeitsmappe soll makro-frei bleiben, eben weil's im ganzen Haus verteilt wird. Aber selbst wenn, das würde doch nicht funktionieren? Wenn ich richtig sehe, würde das Makro immer den Monatsnamen vom Tabellenblatt übernehmen, damit immer "Jänner" drin steht. Aber das ist ja nicht das Problem. Das Problem ist die Funktion MONAT() und dass diese einen Fehler bringt wenn andere Ländereinstellungen verwendet werden. Ich will immer "Jänner" stehen haben, aber die MONAT()-Funktion verlangt eben einmal "Jänner" und ein anderes mal aber "Januar". Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 03. Nov. 2004 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für WolfgangE
=VERGLEICH(A1;{"Jänner";"Februar";"März";"April";"Mai";"Juni";"Juli";"August";"September";"Oktober";"November";"Dezember"};0) würde wenn in A1 Jänner steht den gewünschten Wert 1 bringen und wäre Datumsunabhängig - ich hoffe doch das du nur die Monate als Wert 1-12 haben willst, dann müsste das gehen
[Diese Nachricht wurde von Thomas Harmening am 03. Nov. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003 Compass2000 in (fast) allen Ausbaustufen: Jobserver, ACM, Replikator, DBQ-Programmierung. Programmierung, Wartung und Administration von MSSQL2000-Datenbanken. Grundlegende Kenntnisse in AutoLisp-Programmierung.
|
erstellt am: 03. Nov. 2004 16:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, stimmt, eigentlich will ich "nur" die Zahl 1 - 12 des Monats, allerdings ist dies nur ein Teil einer wesentlich längeren Formel. Ich müsste also diese Funktion überall entsprechend einbauen (was mir nimmer noch besser gefiele als das was ich bisher hab). Mal sehen, vielleicht baue ich die Funktion in eine vesteckte Zelle ein, als eine Art Zwischenergebnis, mit dem ich dann einfach weiterrechne. Danke und ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 03. Nov. 2004 20:10 <-- editieren / zitieren --> Unities abgeben: Nur für WolfgangE
Zitat: Original erstellt von WolfgangE: Wenn ich richtig sehe, würde das Makro immer den Monatsnamen vom Tabellenblatt übernehmen, damit immer "Jänner" drin steht.
Hm, nicht ganz [hoff ich zumindest] ;-) Es ging ja um die Sheetnamen und dass die Deus Probleme mit den Ösis haben und umgekehrt, rein formeltechnisch natürlich ;-) Da du ja mit den Blattnamen via Formel arbeitest, war halt mein Gedankengang, je nach Ländereinstellung, aus Blattname Jänner - Januar [bei D] zu machen, bzw. umgekehrt aus Januar - Jänner [bei A] zu machen, und zwar gleich beim Öffnen der Mappe. Also ich dacht halt bei D: ?monthname(1) Januar und bei A: ?monthname(1) Jänner und das via like "J*n*r" prüfen, welche Systemeinstellung vorliegt. Aber vielleicht hab' ich ja auch was falsch verstanden, wieauchimmer - is ja nu auch egal, soll ja ohne vba sein ;-) lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|