Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1304to1308
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
Array in Funktion
29.03.2013 09:05:58
Andreasser
Guten Morgen allerseits
ich mühe mich jetzt schon seit Stunden mit dem Versuch ab eine einfache Funktion zu schreiben, und zwar habe ich Probleme beim ersten Punkt des Codes. Ich möchte der Funktion noten(bereich) den Bereich übergeben und es sollen alle im Bereich enthaltenen Werte in ein Array zur weiteren verarbeitung geschrieben werden. Ich habe nun schon mit Hilfe von verschiedenen Schreibweisen und beispielen aus dem Netz versucht, doch das einzige was es mir gebracht hat ist eine Lektion in Fehlerkunde...
zum Code:
  • Public Function noten(bereich As Range) As Double
    Dim vektor(bereich.Cells.Count) As double
    Dim i As Integer
    i = 0
    Dim x As Integer
    Dim zelle As Range
    For Each zelle In bereich
    vektor(i) = zelle.Value
    i = i + 1
    Next

  • Das Problem scheint die Dimensionierung des Array zu sein, wenn ich nämlich einen fixen Wert zb 8 einsetze, dann funktioniert dies, aber wieso kann ich nicht einfach die Zellenanzahl einsetzen? Das verstehe ich einfach nicht, schliesslich ist dies ja auch ein fixer Wert.

    8
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    Array in Funktion
    29.03.2013 09:11:52
    ransi
    HAllo
    Setz mal garnichts ein ;-)
    Public Function noten(bereich As Range) As Double
        Dim vektor() As Variant
        vektor = bereich
    End Function


    ransi

    Anzeige
    AW: Array in Funktion
    29.03.2013 09:23:06
    Andreasser
    Danke ransi, hatte ich zu Beginn so gemacht, in der Excel Tabelle erscheint dann #WERT, was erst wieder verschwindet, wenn ich das Array vordimensioniere

    AW: Array in Funktion
    29.03.2013 09:52:47
    ransi
    HAllo Andreas
    Wie klapperst du denn jetzt die Elemente in dem Array ab und was soll die Funktion denn mit dem gefüllten Array machen ?
    ransi

    AW: Array in Funktion
    29.03.2013 12:56:29
    Andreasser
    ich mache dies mit einem for und setze element für element ins array.
    Danach filtere ich die Elemente um doppelte auszusieben und gebe das nte Element als Ergebnis der Funktion zurück (wollte zuerst das ganze Array zurückgeben, hatte aber so meine Mühen in Excel etwas mit dem Array anzufangen)

    Anzeige
    AW: Array in Funktion
    29.03.2013 11:52:24
    Arthur
    Hi Andreasser.
    Beim Dimensionieren bräuchte VBA die Größe des Arrays. Das ist aber erst gegeben, wenn die Funktion aufgerufen wird ...
    Public Function noten(bereich As Range) As Double Dim vektor() As Double Dim i As Integer Dim zelle As Range ReDim vektor(bereich.Cells.Count) i = 0 For Each zelle In bereich vektor(i) = zelle.Value i = i + 1 Next End Function Mit Gruß, Arthur

    AW: Array in Funktion
    29.03.2013 13:00:37
    Andreasser
    wow, danke Arthur, damit geht es. Also wenn ich dich richtig verstanden habe ist das ein Problem beim kompilieren, weil dann der Wert nicht zur Verfügung steht, ist dies richtig?

    Bereichswerte in Vektor schreiben
    30.03.2013 00:04:26
    Erich
    Hi Vorname,
    so ginge das wohl auch:
    
    Option Explicit
    Function noten(rngBer As Range)
    Dim arrErg()
    Dim ii As Long
    Dim rngC As Range
    ReDim arrErg(1 To rngBer.Cells.Count)
    For Each rngC In rngBer
    ii = ii + 1
    arrErg(ii) = rngC.Value
    Next rngC
    noten = arrErg
    End Function
    Sub aTest()
    MsgBox noten(Range("B2:D3"))(4)
    MsgBox Application.Min(noten(Range("B2:D3")))
    End Sub
    
    Die Funktion lässt sich auch im Tabellenblatt aufrufen.
    Allein - es fehlt der Sinn, wie die Formeln in Spalte D zeigen...:
     BCD
    2411-2
    315-27
    4   
    5-2 -2
    615 15
    733 33

    Formeln der Tabelle
    ZelleFormel
    B5=MIN(noten(B2:D3))
    D5=MIN(B2:D3)
    B6=MAX(noten(B2:D3))
    D6=MAX(B2:D3)
    B7=SUMME(noten(B2:D3))
    D7=SUMME(B2:D3)


    Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
    Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

    Anzeige
    AW: Bereichswerte in Vektor schreiben
    01.04.2013 15:37:58
    Andreasser
    Salü Erich
    Danke für deinen Beitrag und du hast recht, es geht so. Zur Sinnfrage, diese Funktion ist ja so noch nicht fertig, es ging mir einfach mal drum die Daten in einem Array zu haben. Ich habe nun in einem weiteren Schritt alle doppelt vorkommenden Noten entfernt und die Dimension angepasst und zusammen mit der Häufigkeitsfunktion arbeite ich nun daran eine schöne VErteilungsgrafik der Notenwerte zu erhalten.
    Gruss Andreasser

    36 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige