'Function' in Excel?

Hallo Mitstreiter,

ich habe (mit Excel 2002) folgendes Problem und Überlegung:

Unter VBA kann man eigene Functionen basteln, welche dann einen Rückgabewert an die „Ausgangsstelle“ zurückgeben.

Nun möchte ich eine ähnliche Funktion in Excel (und OHNE VBA) besitzen.
Sprich: ich habe in einem Tabellenblatt eine „Funktion“ (welche mir die Einkommensteuer ausrechnen soll).
Jetzt möchte ich von verschiedenen anderen Tabellenblättern auf diese Funktion zurückgreifen und von dort dann den „Rückgabewert“ weiterverwenden.

Bsp bisher: ich habe in Tabelle „A“ die Formeln für die Steuerberechnung drin und tu in der dortigen (weiteren) Berechnung auf die Steuerberechnung draufzugreifen
Das selbe habe ich in Tabelle „B“ und „C“ ebenfalls.

Nun möchte ich die (eigentliche) Steuerberechnung in Tabelle „D“ eintragen und von „A“, „B“ und „C“ nur noch die Daten („zu versteuerndes Einkommen“, „Lohnersatzleistungen“, Steuertabelle und „Jahr“) übergeben und dort soll er dann die entsprechende Steuer ausrechnen und mir wieder (je nach dem von wo ich angefragt habe) in Tabelle „A“, „B“ oder „C“ das Ergebnis anzeigen lassen.

Und nein, eine VBA-Funktion (welche ich selbst erstellen könnte) ist nicht drin.

LG Tobi@s

Guten Tag,

und warum machst Du das nicht mit Verweisen auf die entsprechende Zelle? =Mappe.Tabelle.Zelle? Die Werte einzeln auflisten, schafft ebenso noch Transparenz.

Wenn es meines wäre, würde ich persönlich versuchen Lösungen zu finden, welche nicht mappenübergreifend arbeiten. Denn wenn Du eine Mappe umbenennst oder in einen anderen Ordner verschiebst, stimmen die Referenzen nicht mehr.

Was spricht gegen ein AddIn?

Grüezi Tobias

Sprich: ich habe in einem Tabellenblatt eine „Funktion“
(welche mir die Einkommensteuer ausrechnen soll).

Ich vermute, dass es da Eingabe- und eine Ausgabe-Zelle gibt?

Jetzt möchte ich von verschiedenen anderen Tabellenblättern
auf diese Funktion zurückgreifen und von dort dann den
„Rückgabewert“ weiterverwenden.

Bsp bisher: ich habe in Tabelle „A“ die Formeln für die
Steuerberechnung drin und tu in der dortigen (weiteren)
Berechnung auf die Steuerberechnung draufzugreifen
Das selbe habe ich in Tabelle „B“ und „C“ ebenfalls.

Nun möchte ich die (eigentliche) Steuerberechnung in Tabelle
„D“ eintragen und von „A“, „B“ und „C“ nur noch die Daten („zu
versteuerndes Einkommen“, „Lohnersatzleistungen“,
Steuertabelle und „Jahr“) übergeben und dort soll er dann die
entsprechende Steuer ausrechnen und mir wieder (je nach dem
von wo ich angefragt habe) in Tabelle „A“, „B“ oder „C“ das
Ergebnis anzeigen lassen.

Aus einem Tabellenblatt können per Formel keine Werte ‚übergeben‘ werden um dann in einem anderen Blatt damit zu rechnen.

Was ich mit allenfalls vorstellen könnte, wäre eine benannte Funktion über einen Bereichsnamen, der mit den Daten aus dem zentralen Tabellenblatt und den Parametern aus dem aktuellen die gewünschte Berechnung durchführt.
Im Grunde ist das nichts anderes als eine einzelne Formel welche die Berechnung vornimmt, die dann aber mittels geschickt gesetzten absoluten und relativen Bezügen abhängig von der Zelle in der sie steht die Berechnung durchführt.

Um dies angehen zu können ist aber eine tiefere Kenntnis deiner Berechnung und des Aufbaus der Tabellenblättern notwendig.

Des weiteren ist eine solche Lösung von einer klaren und gleich bleibenden Struktur der Daten in den Tabellenblättern abhängig - mehr Flexibilität ist nur mittels VBA-Programmierung möglich.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Guten Tag,

und warum machst Du das nicht mit Verweisen auf die
entsprechende Zelle? =Mappe.Tabelle.Zelle? Die Werte einzeln
auflisten, schafft ebenso noch Transparenz.

Von wo nach wo soll ich verweisen?

Ich habe eine Formel für den Grundtarif. Diese ist nicht mit festen Werten aufgebaut sondern nur mit Zellbezügen. Da die Steuerberechnung im Grunde immer das selbe ist über die Jahre, habe ich mir eine kleine „Tabelle“ erstellt wo die einzelnen Grenzwerte (etc.) zur jeweiligen Steuerberechnung enthalten sind. Über SVerweis lasse ich mir in einer bestimmten Zeile die entsprechenden Daten anzeigen (abhängig welches Jahr der Benutzer auswählt). Diese Zellwerte werden jetzt in der Steuerberechnung benutzt um die konkrete Steuer (abhängig vom zvE + LEL) auszurechnen.

Jetzt ist eben dass Problem dass ich die Berechnung immer „einmalig“ machen muss, da ich ja immer nur auf EINE Zelle (für Jahr, zvE und LEL) zugreifen kann. Deshalb brauche ich - bei mehreren verschiedenen Berechnungen - auch immer EINE Steuerberechnung + dazugehörige SVerweis-Tabelle.

Bei einer selbst erstellten Funktion (oder AddIn) könnte ich ja ohne Probleme sagen „=ESt(Jahr;zvE;LEL;Grund-/Splittingtabelle)“ und der errechnet mir per Makro das Ergebnis. DANN hätte ich auch kein Problem in anderen Tabellen.
Aber gehts eben auch ohne Makros? Ich bezweifel es.

Wenn es meines wäre, würde ich persönlich versuchen Lösungen
zu finden, welche nicht mappenübergreifend arbeiten. Denn wenn
Du eine Mappe umbenennst oder in einen anderen Ordner
verschiebst, stimmen die Referenzen nicht mehr.

es soll ja auch nicht MAPPENübergreifend sein sondern nur Tabellenblatt-übergreifend

Was spricht gegen ein AddIn?

meine Chefs :smile:

LG

Hallo Thomas,

Ich vermute, dass es da Eingabe- und eine Ausgabe-Zelle gibt?

richtig

Aus einem Tabellenblatt können per Formel keine Werte
‚übergeben‘ werden um dann in einem anderen Blatt damit zu
rechnen.

ich ahnte es :smile:

Was ich mit allenfalls vorstellen könnte, wäre eine benannte
Funktion über einen Bereichsnamen, der mit den Daten aus dem
zentralen Tabellenblatt und den Parametern aus dem aktuellen
die gewünschte Berechnung durchführt.
Im Grunde ist das nichts anderes als eine einzelne Formel
welche die Berechnung vornimmt, die dann aber mittels
geschickt gesetzten absoluten und relativen Bezügen abhängig
von der Zelle in der sie steht die Berechnung durchführt.

Um dies angehen zu können ist aber eine tiefere Kenntnis
deiner Berechnung und des Aufbaus der Tabellenblättern
notwendig.

Da die Formeln echt kompliziert sind schlage ich mal folgendes Bsp. vor:

Tabelle 1 (Tabelle 2 etc. sind ähnlich aufgebaut; deshalb gehe ich nicht näher drauf ein; das Prinzip ist dann schon klar):
A1 = Eingabewert1
B1 = Eingabewert2
C1 = Jahr
D1 = lange Formel, welche auf die Zellen A4 - C4 zugreift

In den Zellen A5 - K10 befindet sich eine „Tabelle“ welches alle zur Berechnung benötigten Werte hat. In dieser Tabelle habe ich vorn die Jahreszahlen und dahinter die entsprechenden Werte. In der Zeile darüber (A4 … K4) wird - per SVerweis - entsprechend des (in C1 eingegebenen) Jahres die Werte aus der darunter liegenden Tabelle dort eingetragen, so dass ich für meine reine Berechnung in D1 auf die korrekten Werte zugreifen kann.
Dies geht da die Formel in D1 eigentlich immer das selbe ist, nur dass sich eben einige Werte (Grenzbeträge oder Faktoren) entsprechend der Jahre ändern. Dies funktioniert ja schon wunderbar :smile:

Jetzt möchte ich dass diese A4-K10-Tabelle in einem extra Blatt (nennen wir es „EST“ liegt und auch die Formel aus D1. Zugriff brauch ich von den Blättern „Tab1“, „Tab2“ …

Des weiteren ist eine solche Lösung von einer klaren und
gleich bleibenden Struktur der Daten in den Tabellenblättern
abhängig - mehr Flexibilität ist nur mittels
VBA-Programmierung möglich.

jo, das ist mir schon verständlich und mit VBA wäre ich auch schon lange fertig mit der Aufgabe *g*:

LG Tobias

  • Kein MVP für Excel :smile: -

Tabelle 1 (Tabelle 2 etc. sind ähnlich aufgebaut; deshalb gehe
ich nicht näher drauf ein; das Prinzip ist dann schon klar):
A1 = Eingabewert1
B1 = Eingabewert2
C1 = Jahr
D1 = lange Formel, welche auf die Zellen A4 - C4 zugreift

Also die Formel in D1 greift natürlich auch auf die Werte in A1 und B1 drauf zu …
Das Jahr in C1 ist nur für die SVerweis-Tabelle nötig

Grüezi Tobi@s

Was ich mit allenfalls vorstellen könnte, wäre eine benannte
Funktion über einen Bereichsnamen, der mit den Daten aus dem
zentralen Tabellenblatt und den Parametern aus dem aktuellen
die gewünschte Berechnung durchführt.
Im Grunde ist das nichts anderes als eine einzelne Formel
welche die Berechnung vornimmt, die dann aber mittels
geschickt gesetzten absoluten und relativen Bezügen abhängig
von der Zelle in der sie steht die Berechnung durchführt.

Um dies angehen zu können ist aber eine tiefere Kenntnis
deiner Berechnung und des Aufbaus der Tabellenblättern
notwendig.

Da die Formeln echt kompliziert sind schlage ich mal folgendes
Bsp. vor:

Tabelle 1 (Tabelle 2 etc. sind ähnlich aufgebaut; deshalb gehe
ich nicht näher drauf ein; das Prinzip ist dann schon klar):
A1 = Eingabewert1
B1 = Eingabewert2
C1 = Jahr
D1 = lange Formel, welche auf die Zellen A4 - C4 zugreift

In den Zellen A5 - K10 befindet sich eine „Tabelle“ welches
alle zur Berechnung benötigten Werte hat. In dieser Tabelle
habe ich vorn die Jahreszahlen und dahinter die entsprechenden
Werte. In der Zeile darüber (A4 … K4) wird - per SVerweis -
entsprechend des (in C1 eingegebenen) Jahres die Werte aus der
darunter liegenden Tabelle dort eingetragen, so dass ich für
meine reine Berechnung in D1 auf die korrekten Werte zugreifen
kann.

Dieser Zwischenschritt ist bei der angedachten Lösung nicht möglich, da zu einem Zeitpunkt X nur ein Wert in einer Zelle stehen kann. Für verschiedene Berechnungen müssten das aber unterschiedliche Werte sein.

Daher wäre es notwendig, diese Berechnung komplett in eine einzelne Formal zu verpacken, die sich ihre ‚Parameter‘ aus den Zellen A1:C1 hiolt (mit relativen Bezügen) und die restlichen Angaben aus der vordefinierten Tabelle ‚zusammensucht‘ (hier dann mit absoluten Bezügen oder einem Bereichsnamen).

Dies geht da die Formel in D1 eigentlich immer das selbe ist,
nur dass sich eben einige Werte (Grenzbeträge oder Faktoren)
entsprechend der Jahre ändern. Dies funktioniert ja schon
wunderbar :smile:

…muss aber wie gesagt nochmals umgestrichkt werden - INDEX() und/oder BEREICH.VERSCHIEBEN() könnten dabei hilfreich sein.

Jetzt möchte ich dass diese A4-K10-Tabelle in einem extra
Blatt (nennen wir es „EST“ liegt und auch die Formel aus D1.
Zugriff brauch ich von den Blättern „Tab1“, „Tab2“ …

Ja, das sollte dann kein Problem mehr sein, denke ich.

LG Tobias

  • Kein MVP für Excel :smile: -

…ds macht nix, ich versuche trotzdem zu helfen… :wink:


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas,

Dieser Zwischenschritt ist bei der angedachten Lösung nicht
möglich, da zu einem Zeitpunkt X nur ein Wert
in einer Zelle stehen kann. Für verschiedene Berechnungen
müssten das aber unterschiedliche Werte sein.

Daher wäre es notwendig, diese Berechnung komplett in eine
einzelne Formal zu verpacken, die sich ihre ‚Parameter‘ aus
den Zellen A1:C1 hiolt (mit relativen Bezügen) und die
restlichen Angaben aus der vordefinierten Tabelle
‚zusammensucht‘ (hier dann mit absoluten Bezügen oder einem
Bereichsnamen).

Dies geht da die Formel in D1 eigentlich immer das selbe ist,
nur dass sich eben einige Werte (Grenzbeträge oder Faktoren)
entsprechend der Jahre ändern. Dies funktioniert ja schon
wunderbar :smile:

…muss aber wie gesagt nochmals umgestrichkt werden - INDEX()
und/oder BEREICH.VERSCHIEBEN() könnten dabei hilfreich sein.

Jetzt möchte ich dass diese A4-K10-Tabelle in einem extra
Blatt (nennen wir es „EST“ liegt und auch die Formel aus D1.
Zugriff brauch ich von den Blättern „Tab1“, „Tab2“ …

Ja, das sollte dann kein Problem mehr sein, denke ich.

Kannst du mir einfach mal ein Beispiel geben oder eine Tabelle an mein private Email senden?

…ds macht nix, ich versuche trotzdem zu helfen… :wink:

klar, wäre ich einer bräuchteste mir ja wahrscheinlich nicht helfen *g*

LG Tobi@s

Grüezi Tobi@s

Kannst du mir einfach mal ein Beispiel geben oder eine Tabelle
an mein private Email senden?

Hmmm, ich fürchte, dass diese Beispiel dann weit von deiner Anwendung entfernt ist - daher würde ich vorschlagen, dass Du eine Demo-Mappe mit anonymisierten Daten erstellst (wenn das notwendig ist) und diese dann auf einem WebSpace zum Download zur Verfügung stellst.

Ich habe hier mal ein kleines Beispiel erstellt, das nur einen SVERWEIS() als benannte Formel enthält. Wo immer die benannte Funktionverwendet wirdt greift sie auf die 3 Zellen links daneben als ‚Parameter‘ zu und auf die Tabelle im Blatt ‚ERG‘ als Datenbasis.

http://users.quick-line.ch/ramel/Demo-Daten/tr_Benan…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Tobi@as

Hier die Datei auch im .xls-Format:

http://users.quick-line.ch/ramel/Demo-Daten/tr_Benan…

…aber nach 3 Jahren wäre es IMO an der Zeit den Konverter für die neuen Dateien zu installieren… :wink:

http://www.microsoft.com/downloads/details.aspx?Fami…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -
1 „Gefällt mir“

Hallo Thomas,

Hier die Datei auch im .xls-Format:

danke. Habe sie mir privat gespeichert und werde versuchen sie zu verstehen :smile:

…aber nach 3 Jahren wäre es IMO an der Zeit den Konverter
für die neuen Dateien zu installieren… :wink:

a) in Behörden kommen die Programme oft recht spät an der Basis an *g*
b) irgendwann sollen wir auch MO 2007 bekommen (da gibts dann garantiert schon MO 2015 auf dem Markt *g*)

LG