Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
580to584
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
580to584
580to584
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

function Bereich

function Bereich
10.03.2005 21:33:32
Alexander
Hallo, ich habe ein Problem mit folgender Funktion: Function Abwesenheit(Bereich As Range, Kuerzel As String) For Each cell In Bereich If cell = Kuerzel Then zwi = zwi + 1 Else If zwi > 3 Then Abwesenheit = Abwesenheit + zwi - 1 zwi = 0 End If zwi = 0 End If Next End Function
Sie läßt sich als benutzerdefinierte Funktion leider nicht auf mehrere Arbeitsblätter anwenden, was aber zwingend erforderlich wäre.
Also kurz gesagt, bei den Jan05, Feb05 usw... benannten Blättern funktioniert zwar :
=Abwesenheit('Jan 05'!B8:AF8;"U")
leider aber nicht:
=Abwesenheit('Jan 05'!B8:AF8;'Feb 05'!B8:AF8;"U")
eventuell ist die Lösung ja ganz simpel, ich komme leider nicht drauf.
Für jegliche Hilfe bin ich natürlich im Voraus dankbar...
Greetz Alexander

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: function Bereich
10.03.2005 21:39:32
Boris
Hi Alexander,
woher hast du diese Funktion? Was soll sie genau bezwecken? Sie macht für mich wenig Sinn...
Im Zweifel: Addier sie einfach 12 mal.
Grüße Boris
AW: function Bereich
10.03.2005 21:49:31
Alexander
Die macht schon Sinn, Sie zählt Abwesenheitstage (Kürzel: z.B. U für Urlaub), allerdings nur wenn die betroffene Person länger als 3 Tage weg ist, ausserdem soll der An- bzw. Abreisetag nur als ein halber gelten.
Danke aber erstmal für Deinen Vorschlag, wobei ich die Lösung halt für umständlich gehalten hatte, allerdings, wenns nicht anders geht....
Mir will halt nur nicht in den Kopf, daß ich den Bereich nicht über ein Arbeitsblatt hinaus erweitern kann, muss doch irgendwie gehen, denn schöner wärs schon.
Aber dank einstweilen...
Alexander
Anzeige
AW: function Bereich
10.03.2005 22:07:20
Boris
Hi,
ok - Sinn verstanden - und dennoch hat die Funktion Schwachstellen:
 
 AB
1U0
2U 
3U 
4U 
5U 
Formeln der Tabelle
B1 : =abwesenheit(A1:A5;"U")
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Hier sollte wohl eigentlich 4 rauskommen...
Schwäche: Es muss mindestens wieder 1 Zelle ungleich "Kürzel" da sein - sonst wird nicht gezählt.
Und anscheinend ist die Funktion auch nicht von dir...?!?
Das Selbe mit mehreren Blättern zu realisieren, geht nur mit optionalen Parametern - da ist es für den Anfang einfacher, 12 mal zu addieren.
Grüße Boris
Anzeige
AW: function Bereich
Alexander
Habs mir jetzt nochmal überlegt, würde das ganze schon lieber über VBA lösen, weiß aber nicht wie, bin für weitere Tips sehr dankbar.
greetz Alexander
Hä?
10.03.2005 22:09:22
Boris
Hi,
...wie darf man das verstehen?
Boris
AW: Hä?
10.03.2005 22:18:48
Alexander
Naja, daß ich mir das Alles grad nochmal hier so angeschaut habe und es zumindest momentan noch nicht mit 12 mal multiplizieren lösen möchte.
Wenn mir nichts Anderes übrig bleibt werd ichs natürlich machen nur im moment irritiert mich eben, daß ich bei den bereists vorgegebenen Funktionen durchaus "blätterübergreifend" Bereiche definieren kann und in dem akuten Fall nicht.
Evtl. ist es ja auch nur übertriebener Perfektionismus.
Greetz Alexander
Anzeige
AW: Hä?
10.03.2005 22:26:51
Boris
Hi,
bitte mal ganz direkt:
Die Funktion ist nicht von Dir - und du hast auch keine Ahnung von VBA...!?
Ich hab dir bereits ne klare Antwort gegeben - bau dir optionale Paramter in die Funktion ein.
Und zum Vergleich mit den Excel-Eigenen Funktionen: Die sind hochkompliziert programmiert - dagegen ist deine UDF (wie die meisten anderen im übrigen auch) - mit Verlaub - ein Fliegensch... ;-)))
Grüße Boris
AW: Hä?
10.03.2005 22:36:34
Alexander
Wow, das war direkt...
Von mir ist sie nicht, (wie auch nie behauptet) Ahnung hab ich keine (wie im ersten Beitrag angegeben).
Wobei, wenn Sie von mir wäre UND ich Ahnung hätte, wäre ich wohl nicht mit dem Problem hier erschienen.
Bei meinem letzten, Ähnlich gearteten Problem wurde mir genau hier sehr nett geholfen.
Also, trotz Allem, danke für die Hilfe, hab Dich eventuell mißverstanden.
Alexander
Anzeige
Bitte nicht falsch verstehen...
10.03.2005 22:43:10
Boris
Hi Alexander,
hier wird dir grundsätzlich gerne geholfen - natürlich auch von mir.
Nur hätte die Frage vielleicht so lauten sollen:
"Ich habe hier eine Funktion von jemandem bekommen. Sie zählt Abwesenheiten ab 3 Tagen und mehr. Die funktioniert auf einem Blatt einwandfrei. Jetzt möchte ich sie aber gerne für mehrere Blätter anwenden, habe aber selbst leider keine Ahnung, wie das geht. Kann mir jemand helfen?"
So wie du es formuliert hattest, hab ich dir nur den Hinweis auf die optionalen Paramter gegeben - aber darauf bist du gar nicht eingegangen.
Gedulde dich ein wenig - dann bekommst du hier auch noch die gewünschte Lösung ;-)
Grüße Boris
Anzeige
Ups...
10.03.2005 22:48:39
Alexander
O.K. dann hatte ich wirklich einiges falsch verstanden und entschuldige mich hiermit dafür.
Dann werd ich mal ganz kleinlaut der Dinge (Lösungen...) harren die da kommen.
Und mich abermals im Voraus dafür bedanken...
Für´s Erste mit ParamArray
11.03.2005 00:11:24
Boris
Hi Alexander,
eine Möglichkeit wäre folgende:
Option Explicit
Function ABWESENHEIT(Kuerzel As String, ParamArray Bereiche()) as Long Dim Cell As Range Dim Zwi As Long Dim i As Integer For i = LBound(Bereiche()) To UBound(Bereiche()) For Each Cell In Bereiche(i) If Cell = Kuerzel Then Zwi = Zwi + 1 Else If Zwi > 3 Then ABWESENHEIT = ABWESENHEIT + Zwi - 1 Zwi = 0 End If Zwi = 0 End If Next Cell Next i End Function
Allerdings sind die Bereiche einzelne anzugeben - Funktionssyntax:
=ABWESENHEIT(Kuerzel;Bereiche;...)
Also z.B.:
=ABWESENHEIT("u";Tabelle1!A1:A10;Tabelle2!A1:A10;Tabelle3!A1:A10)
Die von Dir Eingangs gewünschte Schreibweise á la =SUMME(Tabelle1:Tabelle3!A1:A10) muss ich noch überdenken.
Grüße Boris
Anzeige
AW: Für´s Erste mit ParamArray
11.03.2005 06:30:00
Alexander
Hi Boris
Wow, so funktionierts und genauergesagt hatte ich es mir auch so in der Art vorgestellt.
Dankeschön...
Wie könnte ich das Ganze jetzt noch idiotensicher gestalten, so dass es egal ist ob ich "U" oder "u" in die Tabelle eintrage er es zählt. (Quasi ein "Betrag von U" ;-))
Alexander
AW: Für´s Erste mit ParamArray
11.03.2005 09:11:30
Ramses
Hallo
ersetze die Zeile
If Cell = Kuerzel Then
mit
If UCase(Cell) = UCase(Kuerzel) Then
Gruss Rainer
Passt.....
11.03.2005 13:00:20
Alexander
Vielen Dank an Euch beide, klappt wunderbar, komme gerne wieder......
Alexander

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige