Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
688to692
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
688to692
688to692
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Range in Funktion

Range in Funktion
04.11.2005 09:30:50
Diver
Hallo zusammen,
wie kann ich in einer selbstgeschriebenen Funktion einen
variablen Bereich (Range) vom Anwender eingeben lassen,
der danach als Zähler für einen Schleifendurchlauf dienen
soll.
Jemand ne Lösung auf Lager? Vielen Dank vorab.
Gruss,
D.

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range in Funktion
04.11.2005 09:37:48
u_
Hallo,
etwa so:

Function Summe2(rng As Range)
Dim rng2 As Range
For Each rng2 In rng
Summe2 = Summe2 + rng2 ^ 2
Next
End Function

Eingabe in Tabbelle z.B. =Summe2(A1:A10)
Gruß
Geist ist geil!
AW: Range in Funktion
04.11.2005 09:41:51
Malte
Meinst du das so?

Sub Makro1()
anfang = InputBox("Bitte Wert1 eingeben!")
ende = InputBox("Bitte Wert2 eingeben!")
For i = anfang to ende
next i
End Sub

AW: Range in Funktion
04.11.2005 12:40:32
Heiko
Hallo D,
z.B. so. Dabei kannst du sogar den Bereich mit der Maus makieren wenn die Inputbox auf ist.

Sub RangeEingeben()
Dim rngBereich As Range
Dim lngHilf As Long
On Error Resume Next
Set rngBereich = Application.InputBox(" Bitte geben Sie einen Bereich ein !", " Bereich", Type:=8)
If Err.Number <> 0 Then
MsgBox " Sie haben Abbrechen gedrückt !", vbInformation
Else
MsgBox "Anzahl Reihen = " & rngBereich.Rows.Count & vbCr & _
"Anzahl Spalten = " & rngBereich.Columns.Count & vbCr & _
"Anzahl Zellen = " & rngBereich.Count, vbInformation
End If
On Error GoTo 0
End Sub

Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Range in Funktion
04.11.2005 13:59:47
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
AW: Range in Funktion
04.11.2005 13:59:52
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
Anzeige
AW: Range in Funktion
04.11.2005 14:00:03
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
AW: Range in Funktion
04.11.2005 14:00:04
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
Anzeige
AW: Range in Funktion
04.11.2005 14:00:06
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
AW: Range in Funktion
04.11.2005 14:01:02
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
Anzeige
AW: Range in Funktion
04.11.2005 14:04:18
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
AW: Range in Funktion
04.11.2005 14:04:23
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
Anzeige
AW: Range in Funktion
04.11.2005 14:04:30
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
AW: Range in Funktion
04.11.2005 14:04:30
Diver
Hallo zusammen,
zunächst vielen Dank für die freundliche Hilfe.
Was ich konkreter bräuchte wäre folgendes:
Über die Funktion wird ein Suchbereich (Range) über den Anwender mitgegeben.
Zusätzlich werden 3 Kriterien mitgegeben.
Die Range wird nun nach den 3 Kriterien durchsucht...und jedesmal, wenn Kriterium
gefunden wird, Zahl merken und hinterher durch die Anzahl der gefundenen Stellen
teilen, so dass ein Mittelwert rauskommt.
Kann man die beschriebenen Bsp. dahingehend anpassen?
Gruss,
D.
Anzeige
AW: Range in Funktion
04.11.2005 14:51:01
IngGi
Hallo Diver,
ohne die Kriterien zu kennen ist das nicht zu machen, da der ganze Aufbau an der Art der Kriterien hängt. Mal als Beispiel folgende Funktion. Es wird das arithmetische Mittel aller Werte gebildet, die zwischen UGrenze und OGrenze liegen:

Function ArMittel(rngBereich As Range, UGrenze As Variant, OGrenze As Variant) As Variant
Dim rngZelle As Range
Dim lngWerte As Long
Dim dblSumWerte As Double
If IsNumeric(UGrenze) And IsNumeric(OGrenze) Then
If UGrenze > OGrenze Then
ArMittel = "Untergrenze größer Obergrenze!"
Exit Function
End If
For Each rngZelle In rngBereich
If rngZelle <= OGrenze And rngZelle >= UGrenze Then
dblSumWerte = dblSumWerte + rngZelle
lngWerte = lngWerte + 1
End If
Next 'rngZelle
If lngWerte > 0 Then
ArMittel = dblSumWerte / lngWerte
Else
ArMittel = "keine Werte im Bereich"
End If
Else
ArMittel = "Werte für Ober- und Untergrenze eingeben!"
End If
End Function

In der Anwendung sieht das dann z.B. so aus:
 
 CD
844,28571429
92Werte für Ober- und Untergrenze eingeben!
105keine Werte im Bereich
116Untergrenze größer Obergrenze!
123 
135 
146 
158 
169 
174 
185 
197 
202 
214 
Formeln der Tabelle
D8 : =armittel(C8:C21;3;5)
D9 : =armittel(C8:C21;5;a)
D10 : =armittel(C8:C21;10;15)
D11 : =armittel(C8:C21;15;10)
 

Gruß Ingolf
Anzeige
AW: Range in Funktion
04.11.2005 15:08:30
Diver
Hallo Ingolf,
zunächst vielen Dank für deinen VBA-Code.
Ich hatte mir das so vorgestellt:
Der Range-Bereich gibt den Bereich ab der Startzeile bis zur Endzeile vor.
Die Kriterien nach denen gesucht wird sind der
Wochentag, z. B. SO oder MO
Weg, Direkt oder Indirekt
Tarif, z. B. Tarif 1 oder Tarif 2
Daten liegen z. B. für das Datum 01.10. - 15.10. vor.
Die Funktion soll jetzt anhand der drei Parameter den Mittelwert für
die Kombination Wochentag, Weg, Tarif bilden und sauber "wegschreiben".
Diese Mittelwerte nutze ich dann, um die restlichen Tage "hochzurechnen"
bzw. fortzuschreiben.
Habe ich mein Anliegen/Wunsch ausreichend verständlich formuliert?
Viele Grüsse,
D.
Anzeige
AW: Range in Funktion
04.11.2005 15:47:58
IngGi
Hallo Diver,
wenn ich das richtig sehe, sind das alles Kriterien, die in deiner Quelltabelle ja irgendwo vorgegeben sein müssen. Dann braucht es keine benutzerdefinierte Funktion. Das geht mit SUMMENPRODUKT.
Kannst du das für deine Zwecke anpassen?
 
 ABCDEF
11.DITarif 1Direkt54,33333333
21.DITarif 1Indirekt7 
31.DITarif 2Direkt6 
41.DITarif 2Indirekt2 
52.MITarif 1Direkt4 
62.MITarif 1Indirekt3 
72.MITarif 2Direkt7 
82.MITarif 2Indirekt8 
93.DOTarif 1Direkt9 
103.DOTarif 1Indirekt7 
113.DOTarif 2Direkt3 
123.DOTarif 2Indirekt4 
134.FRTarif 1Direkt5 
144.FRTarif 1Indirekt6 
154.FRTarif 2Direkt7 
164.FRTarif 2Indirekt2 
Formeln der Tabelle
F1 : =SUMMENPRODUKT((B1:B60="DI")*(C1:C60="Tarif 1")*(D1:D60="Direkt")*(E1:E60))/SUMMENPRODUKT((B1:B60="DI")*(C1:C60="Tarif 1")*(D1:D60="Direkt"))
 

Mit dem ersten SUMMENPRODUKT wird die Summe der Werte, welche die Kriterien erfüllen, gebildet. Mit dem zweiten SUMMENPRODUKT wird die Anzahl dieser Werte gezählt und die Summe wird dann noch durch die Anzahl geteilt.
Gruß Ingolf
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige