GELÖST: relative Adressierung unter Verwendung von Namen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Bachus
**
Beiträge: 34
Registriert: Fr, 29.07.2011 11:14

GELÖST: relative Adressierung unter Verwendung von Namen

Beitrag von Bachus »

Moin,

ich möchte eine recht umfangreiche mehrseitige Tabelle mit vielen (gleichen) Formeln endlich auf Namen umstellen.
Da ich es dann aber gleich richtig machen und die Wiederholung möglichst auf ein Minimum reduzieren möchte, häng ich nun an einer Stelle fest.

Ich bin mir nicht sicher, wie ich das Problem benennen soll und hoffe, die Überschrift trifft's einigermaßen.
Da eine Datei mehr als 1000 Worte sagt, siehe Anhang ;)
  1. Tabelle "ohne Namen" (alle Formeln noch in den Zellen)
    • Spalte B: diverse Anfangsdaten
    • in Zeile 2: zu wartende Wochen
    • Spalten C+D, G+H, ...: Berechnung des Datums in Anghängigkeit des Anfangsdatums und der zu wartenden Wochen
    Da sich die Formeln immer gleichen, nur dass sich einige der Bezüge verändern, möchte ich das zusammenfassen und universeller gestalten -> Namen
  2. Tabelle "Namen Schritt 1"
    Ich habe den festen Bezugszellen (E2 und I2) bzw. Bezugsbereichen (B2:B12) Namen vergeben und in den Formeln eingesetzt. Nun sieht man, dass in den Spalten C,D, G und H immer das gleiche steht. Prima, wird weiter zusammengefasst.
  3. Tabelle "Namen Schritt 3"
    Ich habe die Formeln aus den jeweiligen Spalten einen Namen verpasst und spreche sie nun über diesen an. Da ich aber wirklich viele dieser Spalten habe (das geht über 2 Jahre nach rechts weiter), sind es mir immer noch zuviele zu ändernde/einzugebende Formeln.
Wenn man sich die Formeln zur Datumsberechnung in Tabelle "Namen Schritt 1" anschaut, sieht man, dass der Unterschied nur noch die Zellen/Namen mit den entspr. Wochen sind. (Das ist die für meine Zwecke erweiterte Formel zur korrekten Berechnung der ersten KW eines Jahres)
=WENN(ISTLEER(Anfangsdatum);"";Anfangsdatum+(Woche_18-WENN(WOCHENTAG(DATUM(JAHR(Anfangsdatum);1;1);2)>4;0;1))*7-WOCHENTAG(DATUM(JAHR(Anfangsdatum);1;1)+(Woche_18-WENN(WOCHENTAG(DATUM(JAHR(Anfangsdatum);1;1);2)>4;0;1))*7;2)+7)
Nun dachte ich, dass ich ja eigentlich statt mittels Namen für die zu verwendende Wochenzelle lieber mittels VERSCHIEBUNG() die Formel noch universeller gestalten könnte, damit ich sie in jeder Spalte einsetzen kann egal welche Woche oben steht. Nur da klemmt's nun.
Ich muss ja immer nur 2 nach rechts (bzw. 3 aber mit zwei Formeln läßt sich leben^^) aber je nachdem von welcher Zeile man gerade ausgeht unterschiedlich weit nach oben.

Wie landet man immer in Zeile 2 ohne absolute Adressierung?
Oder seh ich den Wald vor lauter Namen grad nicht mehr? :?


OO 3.3.0 b9567 / Win 7
Dateianhänge
NamenInFormel.ods
(12.81 KiB) 52-mal heruntergeladen
Zuletzt geändert von Bachus am Do, 22.09.2011 20:36, insgesamt 1-mal geändert.
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: relative Adressierung mittels Namen

Beitrag von balu »

Hallo Bachus,

mir ist momentan wirklich schleierhaft was Du willst, und das in mehrfacher Hinsicht.

1.
Das ist die für meine Zwecke erweiterte Formel zur korrekten Berechnung der ersten KW eines Jahres
Was willst Du uns damit sagen? Versteh ich nicht! Denn mit der Calc eigenen Funktion =KALENDERWOCHE() bekommt man immer exakt die richtige Kalenderwoche zu einem Datum, und das nach DIN EN 28601 (ISO 8601).


2.
Wenn ich mir deine Beispieldatei anschaue, dann bin ich mir nicht sicher ob ich sie richtig verstehe.
Beispielsweise:
In Spalte B *Anfangsdatum* in B5 steht ein Datum. In E2 steht 18, soll wohl die Anzahl an Wochen ab Anfangsdatum sein. Richtig!?
In C5 steht per Formel ein Datum, welches ich mir nicht im Zusammenhang mit der Beschriftung *erster Tag der o.g. Woche* erklären kann. Zumal dieser Tag ein Samstag ist, und folgedessen kann das unmöglich der erste Tag der Kalenderwoche sein, da nämlich eine Kalenderwoche nach der eben zitierten Norm immer mit einem Montag anfängt.

Wenn ich jetzt versuche deine dortige Überlegung richtig zu Interpretieren, dann hast Du wohl folgendes vor.
Vom Anfangsdatum, z.B. 02.06.2010 (B5) willst Du 18 Wochen vorzählen. Und dann möchtest Du den ersten Tag haben der 18 Wochen nach dem Anfangsdatum liegt. Da bin ich mir aber auch noch nicht so sicher. Wenn ich jetzt ganz einfach die Anzahl der Wochen aus E2 nehme und diese mit der Anzahl der Tage pro Woche multipliziere und diese dann zu dem Anfangsdatum addiere, also:
=(E2*7)+B5
dann komme ich auf den 06.10.2010.
Da das Anfangsdatum ein Mittwoch ist, komme ich jetzt mit dieser simplen Rechnung auch wieder auf einen Mittwoch. In der Beispieldatei gibst Du aber per Formel ein ganz anderes Enddatum vor, nämlich den 02.10.2010 welches ein Samstag ist. Und nun fällt es mir noch um so schwerer den ganzen Zusammenhang zu verstehen, da dein Enddatum weder der erste Tag einer Kalenderwoche, noch der erste Tag der Woche überhaupt ist, und er ist auch nicht der erste Tag der 18 Wochen später zu dem Anfangsdatum liegt.


Also, wenn Du dein dortiges Vorhaben noch mal genauer erklären könntest, würden wir uns doch darüber freuen. Denn vielleicht können wir dann ja besser auf dein Hauptanliegen eingehen.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Bachus
**
Beiträge: 34
Registriert: Fr, 29.07.2011 11:14

Re: relative Adressierung mittels Namen

Beitrag von Bachus »

Hallo Balu
balu hat geschrieben: Was willst Du uns damit sagen? Versteh ich nicht! Denn mit der Calc eigenen Funktion =KALENDERWOCHE() bekommt man immer exakt die richtige Kalenderwoche zu einem Datum, und das nach DIN EN 28601 (ISO 8601).
Kalenderwochen beginnen mit dem Montag. Jede Woche gehört immer als ganze zu einem Kalenderjahr (es gibt keine halben Kalenderwochen), wodurch dann aber bestimmte Tag am Jahresanfang oder -ende zu einem anderen Jahr gehören können als ihre Kalenderwoche. Da Kalenderjahre ein oder zwei Tage mehr haben als die 364 Tage, die genau 52 Wochen entsprächen, haben die meisten Jahre 52, manche aber 53 Kalenderwochen. Die Kalenderwochen eines Jahres werden beginnend mit der Woche gezählt, in der der 4. Januar des jeweiligen Jahres liegt. Das ist, wie man leicht zeigen kann, zugleich die Woche, in der der erste Donnerstag des Jahres liegt. Leider klappt das mit dem Befehl KALENDERWOCHE() nicht immer fehlerfrei. Ist ne lange Geschichte und ging über ziemlich viele Posts (imho auch mehr als ein Thread) in nem anderen Forum. Hab ich auch nur nachgelesen. Die Beispiele dort zeigten das Problem auf (konnte man nachstellen und beim Verrechnen zuschauen^^).

Allerdings habe ich beim Erweitern Fehler eingebaut, wie du zum Glück erkannt hast.
Dafür herzlichen Dank! :) 4 Augen sehen halt mehr als 2 und manchmal konzentriert man sich auf ein Problem und bemerkt andere simplere garnicht.
balu hat geschrieben: 2.
Wenn ich mir deine Beispieldatei anschaue, dann bin ich mir nicht sicher ob ich sie richtig verstehe.
Beispielsweise:
In Spalte B *Anfangsdatum* in B5 steht ein Datum. In E2 steht 18, soll wohl die Anzahl an Wochen ab Anfangsdatum sein. Richtig!?
In C5 steht per Formel ein Datum, welches ich mir nicht im Zusammenhang mit der Beschriftung *erster Tag der o.g. Woche* erklären kann. Zumal dieser Tag ein Samstag ist, und folgedessen kann das unmöglich der erste Tag der Kalenderwoche sein, da nämlich eine Kalenderwoche nach der eben zitierten Norm immer mit einem Montag anfängt.

Wenn ich jetzt versuche deine dortige Überlegung richtig zu Interpretieren, dann hast Du wohl folgendes vor.
Vom Anfangsdatum, z.B. 02.06.2010 (B5) willst Du 18 Wochen vorzählen. Und dann möchtest Du den ersten Tag haben der 18 Wochen nach dem Anfangsdatum liegt.
Völlig richtig. Wenn man weiß was gemeint sein soll, vergisst man auch mal, dass Aussenstehende bestimmtes Hintergrundwissen nicht haben und Mißverständnisse auftreten können. Aber gut erkannt! 8)
Zu dem Startdatum in Spalte B sollen x Wochen (E2, I2, ...) weitergerechnet und da zugehörige "Anfangsdatum" und "Enddatum" in C&D, G&H, ... angezeigt werden.

Dass ich dort noch die lange Formel eingesetzt habe, liegt wohl an der Entwicklungsgeschichte. Sie ist bei Verwendung von Startdatum und Wartewochen aber tatsächlich mittlerweile obsolet. Ich hab's nur nicht gemerkt (und Fehler haben sich über die Zeit auch noch eingeschlichen) :oops:


Ich habe die Formeln in der Datei korrigiert/gekürzt und die Beschriftung modifiziert (hoffentlich aussagekräftiger und eindeutiger)

Auch wenn es nun nicht mehr ganz so auffällig ist, bleibt das Ursprungsproblem:
Wie kann ich die Formel in den Spalten C und G bzw. D und H so modifizieren, dass ich eine universelle habe oder zumindest 1 universelle für das "Startdatum" nach x Wochen und 1 für das "Enddatum"?



Vielen Dank für deine Bemühungen :)

PS:
Dass Namen praktisch sind, hat sich beim Anpassen deutlich gezeigt. Nach dem Korrigieren der mittels Namen gespeicherten Formeln für das dritte Blatt, war ich mit diesem bereits fertig. Blatt eins und zwei benötigten deutlich mehr Zeit :)
Dateianhänge
NamenInFormel_v2.ods
(13.26 KiB) 41-mal heruntergeladen
Bachus
**
Beiträge: 34
Registriert: Fr, 29.07.2011 11:14

Re: relative Adressierung mittels Namen

Beitrag von Bachus »

Wie kann ich die Formel in den Spalten C und G bzw. D und H so modifizieren, dass ich eine universelle habe oder zumindest 1 universelle für das "Startdatum" nach x Wochen und 1 für das "Enddatum"?

Ich habe jetzt versucht, durch die Funktion ZELLE() in Verbindung mit VERSCHIEBUNG() einen positionsabhängigen Sprung zu formulieren. Aber ich bekomme immer Err:504 angezeigt

Bsp:
In C2 steht der String Testzelle

In A1 steht
=ZELLE("ADRESSE")
Ergebnis: $A$1
Funktioniert

Schreibe ich in A1
=VERSCHIEBUNG($A$1;1;2)
ich habe extra die absolute Adressierung benutzt, damit das Problem gleich deutlicher wird
Ergebnis: Testzelle
Funktioniert

Schreib ich aber in A1
=VERSCHIEBUNG(ZELLE("ADRESSE");1;2)
ich habe also nur die absolute Adresse durch die Funktion ersetzt, die als Ergebnis eben genau jene absolute Adresse zurückgibt
Erbgebnis: Err:504
warum

Kann mir das jmd erklären? Wieso ist der Parameter im falschen Format?

Edit: vergessen. Die Ausgabe der Funktion Zelle() in Text umzuformatieren
=VERSCHIEBUNG(TEXT(ZELLE("ADRESSE");"#");1;2)
hat's auch nicht gebracht :(
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: relative Adressierung mittels Namen

Beitrag von Stephan »

Leider klappt das mit dem Befehl KALENDERWOCHE() nicht immer fehlerfrei. Ist ne lange Geschichte und ging über ziemlich viele Posts (imho auch mehr als ein Thread) in nem anderen Forum. Hab ich auch nur nachgelesen. Die Beispiele dort zeigten das Problem auf (konnte man nachstellen und beim Verrechnen zuschauen^^).
dann freuen wir uns auf einen Link, zumal es die Funktion KALENDERWOCHE() ja nicht nur in Calc sondern auch in Excel gibt und sich beide unterschiedlich verhalten.

Im Übrigen wäre es gut wenn Du Deine Formel einmal erläuterst, genauer gesagt verständlich in eine TAbelle schreibst und sie der Kalenderwochenfunktion von Calc gegenüberstellst.

Anders gefragt in welchen Kalenderjahren kommt Deine Formel zu anderen Ergebnissen als Calc?

In Calc berechnet KALENDERWOCHE() jedenfalls:

Jahreswechsel | Erster Montag der ersten Kalenderwoche
1950/1951 | 01.01.
1951/1952 | 31.12.
1952/1953 | 29.12.
1953/1954 | 04.01.
1954/1955 | 03.01.
1955/1956 | 02.01.
1956/1957 | 31.12.
1957/1958 | 30.12.
1958/1959 | 29.12.
1959/1960 | 04.01.
1960/1961 | 02.01.
1961/1962 | 01.01.
1962/1963 | 31.12.
1963/1964 | 30.12.
1964/1965 | 04.01.
1965/1966 | 03.01.
1966/1967 | 02.01.
1967/1968 | 01.01.
1968/1969 | 30.12.
1969/1970 | 29.12.
1970/1971 | 04.01.
1971/1972 | 03.01.
1972/1973 | 01.01.
1973/1974 | 31.12.
1974/1975 | 30.12.
1975/1976 | 29.12.
1976/1977 | 03.01.
1977/1978 | 02.01.
1978/1979 | 01.01.
1979/1980 | 31.12.
1980/1981 | 29.12.
1981/1982 | 04.01.
1982/1983 | 03.01.
1983/1984 | 02.01.
1984/1985 | 31.12.
1985/1986 | 30.12.
1986/1987 | 29.12.
1987/1988 | 04.01.
1988/1989 | 02.01.
1989/1990 | 01.01.
1990/1991 | 31.12.
1991/1992 | 30.12.
1992/1993 | 04.01.
1993/1994 | 03.01.
1994/1995 | 02.01.
1995/1996 | 01.01.
1996/1997 | 30.12.
1997/1998 | 29.12.
1998/1999 | 04.01.
1999/2000 | 03.01.
2000/2001 | 01.01.
2001/2002 | 31.12.
2002/2003 | 30.12.
2003/2004 | 29.12.
2004/2005 | 03.01.
2005/2006 | 02.01.
2006/2007 | 01.01.
2007/2008 | 31.12.
2008/2009 | 29.12.
2009/2010 | 04.01.
2010/2011 | 03.01.
2011/2012 | 02.01.
2012/2013 | 31.12.
2013/2014 | 30.12.
2014/2015 | 29.12.
2015/2016 | 04.01.
2016/2017 | 02.01.
2017/2018 | 01.01.
2018/2019 | 31.12.
2019/2020 | 30.12.
2020/2021 | 04.01.
2021/2022 | 03.01.
2022/2023 | 02.01.
2023/2024 | 01.01.
2024/2025 | 30.12.
2025/2026 | 29.12.
2026/2027 | 04.01.
2027/2028 | 03.01.
2028/2029 | 01.01.
2029/2030 | 31.12.
2030/2031 | 30.12.
2031/2032 | 29.12.
2032/2033 | 03.01.
2033/2034 | 02.01.
2034/2035 | 01.01.
2035/2036 | 31.12.
2036/2037 | 29.12.
2037/2038 | 04.01.
2038/2039 | 03.01.
2039/2040 | 02.01.
2040/2041 | 31.12.
2041/2042 | 30.12.
2042/2043 | 29.12.
2043/2044 | 04.01.
2044/2045 | 02.01.
2045/2046 | 01.01.
2046/2047 | 31.12.
2047/2048 | 30.12.
2048/2049 | 04.01.
2049/2050 | 03.01.
2050/2051 | 02.01.




Gruß
Stephan
Bachus
**
Beiträge: 34
Registriert: Fr, 29.07.2011 11:14

Re: relative Adressierung mittels Namen

Beitrag von Bachus »

Mach ich gerne mal, Stephan. Dazu muss ich es aber erstmal wieder raussuchen.
Jedoch geht's in diesem Thread nicht darum. Und ich geh mal davon aus, dass es auch in diesem Forum nicht gern gesehen wird, wenn innerhalb eines Threads neue/andere Fragen gestellt werden.

Oder liege ich da falsch?
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: relative Adressierung mittels Namen

Beitrag von balu »

Hallo Bachus,
Bachus hat geschrieben: Leider klappt das mit dem Befehl KALENDERWOCHE() nicht immer fehlerfrei. Ist ne lange Geschichte und ging über ziemlich viele Posts (imho auch mehr als ein Thread) in nem anderen Forum.
Dann solltest Du uns doch mal bitte schön dieses Forum samt Thread nennen in dem das ausdiskutiert wurde, damit wir das besser nachvollziehen können. Und außerdem solltest Du das unbedingt ganz dringend als Fehler bei den Entwicklern melden, Verbesserungsvorschläge und Fehlermeldungen zu OOo. Denn ich höre zum ersten mal davon, dass OOo sich in dieser Hinsicht nicht Norm gerecht verhällt. Und das wäre dann natürlich ein sehr schwerwiegender Fehler der dringend behoben werden muss! Zumal in der Online-Hilfe zu KALENDERWOCHE extra darauf hingewiesen wird, das nach Norm gearbeitet wird.

Was ich aber ehern vermute, dass Du Excel mit OOo verwechselst. Denn in Excel wird nach meinem Wissensstand noch immer nicht nach DIN EN 28601 (ISO 8601) die Kalenderwoche berechnet, sondern nach dem Amerikanischem System. Und das es in diversen Excel-Foren darüber mehrere Threads deswegen gibt, dass weiß ich und ist auch nichts neues.

OOo bietet aber auch noch die Funktion KALENDERWOCHE_ADD() an, womit dann die Kalenderwoche exakt wie in Excel berechnet wird.

Deine Definierung bezüglich der Kalenderwoche kenne ich zu genüge. Ich mag sogar sagen, ich kenne sie Inn- und Auswendig. Denn ich habe schon mehrere Kalender mit Anzeige der Kalenderwoche in Calc erstellt und einige hier im Forum gepostet. Und von daher kann ich nur noch mal bestätigen, das in Calc richtig nach Norm gerechnet wird.



Nun zu deinem eigentlichem Problem.
Mal ne ganz bescheidene Frage.
Warum willst Du denn dir mit der zu letzt geposteten Formel dir das Leben unnötig schwer machen? Ich hab das jetzt mit einem kleinen Trick ganz anders gelöst.

Unterhalb der Zeile 3 habe ich noch eine Zeile eingefügt.
In C4

Code: Alles auswählen

=7*E2
In D4

Code: Alles auswählen

=C4+6
In G4 und H4 dementsprechend das selbe.

Nun in C5

Code: Alles auswählen

=$B6+C$4
Jetzt hab ich dieser Formel in C5 den Namen DateN zugeordnet. Dann konnte ich ganz einfach diese Simpelformel, oder besser gesagt den Namen in die gewünschten Spalten kopieren.
Anschließend habe ich noch die Zellen C3 & C4, D3 & D4, G3 & G4 so wie H3 & H4 verbunden, zu sehen in *ohne Namen_2* und in *Mit Namen*. Dadurch fällt es nicht sofort auf das eine zusätzliche Zeile im Spiel ist.

Also, in meinen Augen wäre damit das Hauptproblem erledigt. Eine Formel die für alle 4 Spalten gültig ist. Ist wohl mit einem kleinen Technischen und Optischem Trick verbunden, aber immerhin funktioniert es.

Natürlich könnte man das auch ohne "Netz und doppelten Boden" mit einer hoch komplizierten Formel lösen, aber dann müsste ich mich fragen: "Warum? Wozu?"


Gruß
balu
Dateianhänge
NamenInFormel_balu.ods
(14.39 KiB) 37-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Bachus
**
Beiträge: 34
Registriert: Fr, 29.07.2011 11:14

GELÖST: (halb-)relative Adressierung unter Verwendung von Na

Beitrag von Bachus »

Da diese Kalenderwochen-Formel anscheinend doch recht viel Staub aufwirbelt, habe ich bereits gesucht, aber leider noch nichts gefunden.
Ich weiß noch, dass es schon recht lange her ist. Ich benutze bereits seit mehreren Jahren nicht mehr mit MS-Office und schließe darum erstmal eine Verwechslung mit Excel aus (wobei nichts 100% ist). Es kann durchaus sein, dass es sich auf eine frühere Version von Calc bezog.
Ich werde aber weiter die Augen offen halten. Vllt stoße ich noch auf den alten Thread (wenn er nicht in irgendeinem ForumsArchiv verschwunden ist mittlerweile :? )

Allerdings arbeite ich mich erst seit Kurzem unter die OO-Oberfläche. Namen setze ich das erste Mal ein. Die Tabelle die ich grad neu aufarbeite, ist auch schon etwas betagter und stammt in der Originalversion nicht von mir.


Hallo balu,
ich ziehe deine letzte Frage mal an den Anfang:
balu hat geschrieben:Natürlich könnte man das auch ohne "Netz und doppelten Boden" mit einer hoch komplizierten Formel lösen, aber dann müsste ich mich fragen: "Warum? Wozu?"
Der Grund ist schnell genannt: Es reizt mich, es so umzusetzen (es hinzubekommen). Ist vllt ein wenig nerdisch aber was soll's.
balu hat geschrieben:Anschließend habe ich noch die Zellen ... verbunden..
Das geht? Ohne Übernahme des Inhalts in die erste Zelle? Ehrlich gesagt hab ich es nie probiert sondern bin immer davon ausgegangen, dass der nicht verschobene Inhalt dann überschrieben/gelöscht wird. Damit ist es tatsächlich schnell zu lösen - ein bißchen quick'n'dirty ;)

Und ich werde es erstmal so machen. Vielen Dank dafür :!:

Dennoch ärgert es mich, dass ich es nicht hinbekomme ZELLE() mit VERSCHIEBEN() zu kombinieren.
Ich weiß inzwischen, dass ZELLE einen String zurückliefert. Somit war mein Versuch der Umwandlung in Text völlig sinnlos :lol: Eine Umwandlung in eine Zahl führt aber auch nicht zum Ziel, denn dann wird aus bspw A1 schlicht nur eine Null. Was erwartet Verschieben() für ein Format beim Bezug? Das hab ich noch nicht rausbekommen.

Aber das ist ein neues Problem und gehört hier nicht rein.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: relative Adressierung mittels Namen

Beitrag von Stephan »

Oder liege ich da falsch?
Nein, da liegst Du nicht falsch, nur glaube ich nicht eine neue FRage aufzuwerfen denn ich will ja lediglicgh DEine Formel:

=WENN(ISTLEER(Anfangsdatum);"";Anfangsdatum+(Woche_18-WENN(WOCHENTAG(DATUM(JAHR(Anfangsdatum);1;1);2)>4;0;1))*7-WOCHENTAG(DATUM(JAHR(Anfangsdatum);1;1)+(Woche_18-WENN(WOCHENTAG(DATUM(JAHR(Anfangsdatum);1;1);2)>4;0;1))*7;2)+7)

verstehen, denn in der mitgelieferten Datei steht nichts was auf die erste Woche Bezug nimmt.

oder machen wir es genauer, denn Du schreibst:
Kalenderwochen beginnen mit dem Montag.
ja bzw. Du kannst in Calc sogar einstellen wann sie beginnen sollen, für Montag gilt dann 2 als Wert des entsprechenden Parameters.
Jede Woche gehört immer als ganze zu einem Kalenderjahr (es gibt keine halben Kalenderwochen), wodurch dann aber bestimmte Tag am Jahresanfang oder -ende zu einem anderen Jahr gehören können als ihre Kalenderwoche. Da Kalenderjahre ein oder zwei Tage mehr haben als die 364 Tage, die genau 52 Wochen entsprächen, haben die meisten Jahre 52, manche aber 53 Kalenderwochen. Die Kalenderwochen eines Jahres werden beginnend mit der Woche gezählt, in der der 4. Januar des jeweiligen Jahres liegt. Das ist, wie man leicht zeigen kann, zugleich die Woche, in der der erste Donnerstag des Jahres liegt.
Soweit so klar und alles das macht Calc auch so wenn Du dort KALENDERWOCHE() verwendest
Leider klappt das mit dem Befehl KALENDERWOCHE() nicht immer fehlerfrei.
tja und hier hätte ich nun schlicht gerne gewußt wo Fehler auftreten, wobei ich nur nochmal betonen kann das Calc anders rechnet (KALENDERWOCHE()) als Excel aber auch so rechnen kann wie Excel (KALENDERWOCHE_ADD()) wenns dann sein soll.
Die beiden unterschiedlichen Funktionsnamen dienen auch nur der Unterscheidung, weil eben die Funktionen unterschiedlich rechnen. KALENDERWOCHE_ADD() rechnet dabei genauso wie KALENDERWOCHE() in Excel aber eben anders als KALENDERWOCHE() (ohne _ADD) in Calc.

Mir gehts hier auch nicht um den Beleg ob Calc eine Norm einhält sondern allein um die praktische SEite der Geschichte und die ist, meiner Meinung nach, das Excel die erste Kalenderwoche des Jahres anders definiert als Du sie beschreibst und deswegen Excel nicht so rechnet wie Du willst, Calc hingegen genauso rechnet wie du es verbal beschreibst.

Was also stimmt nun?



Gruß
Stephan
Bachus
**
Beiträge: 34
Registriert: Fr, 29.07.2011 11:14

Re: relative Adressierung mittels Namen

Beitrag von Bachus »

Hallo Stephan,

wahrscheinlich haben sich unsere Posts überschnitten.
Ich ergänze noch gerne folgendes: Es war kein Problem mit dem Wochenbeginn bzgl Sonntag oder Montag. Es war tatsächlich so, dass es mind. 1 falsches Ergebnis gab, was nachvollziehbar war.

Leider find ich es auf die Schnelle nicht, da schon sehr lange her und möglicher Weise durchaus auch eine alte OO Version.
In den Bookmarks hab ich es auch nimmer. Ist beim Bereinigen vor knapp 2 Jahren vorm Übertragen auf den nächsten Rechner wohl dem Besen mit zum Opfer gefallen :(
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: GELÖST: relative Adressierung unter Verwendung von Namen

Beitrag von Stephan »

Leider find ich es auf die Schnelle nicht
irgendwie reden wir aneinander vorbei. Ich bin hier nicht auf der Suche nach einem Beweis, sondern mir würde es völlig reichen wenn ich wüßte wie ich denn nun Deine Formel verwenden soll, dann kann ich nämlich die Berechnung für tausende von Jahren schnell selbst durchführen und mit dem vergleichen was Calc berechnet und schon wüßte ich ob Calc irgendwo anders rechent.

Ich hänge jetzt hier eine Testdatei an mit der Bitte das Du dort in Cellen C1 bis C12 Deine Foirmel in richtiger WEise einfügst, die Erweiterung der DAtei und den Vergleich schaffe ich dann auch selbst.


Gruß
Stephan
Dateianhänge
vergleichsbeispiel.ods
(9.17 KiB) 45-mal heruntergeladen
Bachus
**
Beiträge: 34
Registriert: Fr, 29.07.2011 11:14

Re: GELÖST: relative Adressierung unter Verwendung von Namen

Beitrag von Bachus »

Hallo Stephan,

ich bin nicht im Besitz der Originalformel. Die wurde ganz am Anfang mal in der Tabelle genutzt, als darin noch ohne Startdatum und nur mit KWs gearbeitet wurde.
Ein paar Telefonate und diverse Emails haben leider auch noch nicht zum ERfolg geführt.

Mittlerweile ist mir aber auch klar geworden, dass wir weit stärker aneinander vorbeireden, als angenommen.

Das mag einerseits an meiner vlt etwas unglücklichen Formulierung gelegen haben und andererseits an der Vom-Hörensagen-Unschärfe. Soviel konnte ich bisher rekonstruieren. Es ging nicht direkt darum, dass KALENDERWOCHE bei Übergabe eines Datums falsch rechnet. Es war im Original eine Formel, die anhand von Jahreszahl und KW-Zahl das zugehörige Datum berechnete und sich dabei wohl auch auf KALENDERWOCHE stützte, was dann irgendwie zu dem Problem geführt haben soll. Wie genau, kann ich aber leider nicht genauer sagen :(

Ich meld mich hier, sollte ich mehr wissen.


PS: Ich habe den positionsabhängigen Sprung nach oben hinbekommen :)

Code: Alles auswählen

=VERSCHIEBUNG(INDIREKT(ADRESSE(ZEILE();SPALTE()));2-ZEILE();1)
bezieht sich immer auf die 2. Zeile und eine Spalte nach rechts von der Formel-Zelle aus gesehen - egal von wo.
Gert Seler
*******
Beiträge: 1763
Registriert: Di, 03.10.2006 18:05

Re: GELÖST: relative Adressierung unter Verwendung von Namen

Beitrag von Gert Seler »

Hallo zusammen,
und hier die Formel, die beide "Office_Calc-Systeme" unterstützt.

Code: Alles auswählen

=KÜRZEN((F1-WOCHENTAG(F1;2)-DATUM(JAHR(F1+4-WOCHENTAG(F1;2));1;-10))/7)&". KW"
Das Datum befindet sich hier in "F1".
Die Antwort von Balu entspricht den Gegebenheiten in "MS-Excel" das ist halt typisch "Ami".
Generell sollte bei Fragen doch erst einmal erklärt werden, welche Aufgabe zur Lösung ansteht, dann müssen die Helfer
nicht so lange im "Nebel" herumstochern !


mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
Bachus
**
Beiträge: 34
Registriert: Fr, 29.07.2011 11:14

Re: GELÖST: relative Adressierung unter Verwendung von Namen

Beitrag von Bachus »

Hallo Gert,

da stimme ich dir zu 100% zu.
Genau aus diesem Grund hatte ich im Erööfnungspost auch eine Datei mit mehreren Blättern, die die Veränderung schrittweise Protokollieren angehängt und des Weiteren das Problem vor welchem ich stand möglichst genau beschrieben. Und zwar wie folgt:
Bachus hat geschrieben:...Nun dachte ich, dass ich [...] mittels VERSCHIEBUNG() die Formel noch universeller gestalten könnte, damit ich sie in jeder Spalte einsetzen kann [...]. Nur da klemmt's nun.
Ich muss ja immer nur 2 nach rechts[...] aber je nachdem von welcher Zeile man gerade ausgeht unterschiedlich weit nach oben.

Wie landet man immer in Zeile 2 ohne absolute Adressierung?
Sollten diese Schritte alle noch zu nebulös gewesen sein, gelobe ich Nachhilfe zu nehmen.

mfg
Bachus
Gert Seler
*******
Beiträge: 1763
Registriert: Di, 03.10.2006 18:05

Re: GELÖST: relative Adressierung unter Verwendung von Namen

Beitrag von Gert Seler »

Hallo Bachus,
die Flexibilität einer "Tabellenkalkulation" ist die Vielfalt der Lösungsmöglichkeiten.
Gemäß Deinem ersten Beispiel kann in "C5" auch diese Funktion zur Berechnung führen:

Code: Alles auswählen

=EDATUM(B5;4,5)+1
und in "D5"

Code: Alles auswählen

=C5+6
Erklärung : 18 KW's gleich 4,5 Monate und 24KW's =6 Monate.
Bitte "OOo_Calc-Hilfe" "EDATUM Funktion" lesen.
Bitte vor allgemeiner Anwendung "Formel" auf Tauglichkeit prüfen.
Du benötigst keine Nachhilfe, aber die Formel in D5 war mir einmal von der Funktion her und ebenso von der Länge,
unverständlich.

Ich hoffe Du kannst mit dieser Erklärung leben und zum anreiz noch folgendes :
http://www.ooowiki.de/CalcFunktionenDat ... gorieCalc)
http://www.ooowiki.de/CalcFunktionenDat ... gorieCalc)

mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
Antworten