AW: Zweitgrößte Variable bestimmen
18.03.2013 19:29:19
Erich
Hi Richard,
so ganz klar wird nicht, was du mit "um die Zuordnung zwischen Versuch1 bis Versuch3 zu erhalten" meinst.
Mit dem Variablennamen wirst du nichts anfangen können. Wie und wo willst du den speichern? Als String?
Was bestimmt werden kann, ist eine Position in einem Array, mit Match (VERGLEICH).
Das passiert in diesen drei Varianten:
Option Explicit
Sub Beginner1()
Dim anz_v1 As Long, anz_v2 As Long, anz_v3 As Long
Dim tripel
Dim minimum As Long, Maximum As Long, mittel As Long
Dim pos As Integer
'Länge der Datenreihen bestimmen
Worksheets("Versuch1").Activate
anz_v1 = WorksheetFunction.Count(Columns(3))
Worksheets("Versuch2").Activate
anz_v2 = WorksheetFunction.Count(Columns(3))
Worksheets("Versuch3").Activate
anz_v3 = WorksheetFunction.Count(Columns(3))
'Minimale und maximale Datenreihenlänge bestimmen
tripel = Array(anz_v1, anz_v2, anz_v3)
minimum = WorksheetFunction.Min(anz_v1, anz_v2, anz_v3)
Maximum = WorksheetFunction.Max(anz_v1, anz_v2, anz_v3)
mittel = WorksheetFunction.Large(tripel, 2)
pos = WorksheetFunction.Match(Maximum, tripel, 0)
MsgBox "Maximum in Versuch" & pos
pos = WorksheetFunction.Match(mittel, tripel, 0)
MsgBox "Zweitgrößtes in Versuch" & pos
End Sub
Sub Beginner2()
Dim tripel(1 To 3) As Long
Dim minimum As Long, Maximum As Long, mittel As Long
Dim pos As Integer
'Länge der Datenreihen bestimmen
With WorksheetFunction
tripel(1) = .Count(Worksheets("Versuch1").Columns(3))
tripel(2) = .Count(Worksheets("Versuch2").Columns(3))
tripel(3) = .Count(Worksheets("Versuch3").Columns(3))
'Minimale und maximale Datenreihenlänge bestimmen
minimum = WorksheetFunction.Min(tripel)
Maximum = WorksheetFunction.Max(tripel)
mittel = WorksheetFunction.Large(tripel, 2)
pos = .Match(Maximum, tripel, 0)
MsgBox "Maximum in Versuch" & pos
pos = .Match(mittel, tripel, 0)
MsgBox "Zweitgrößtes in Versuch" & pos
End With
End Sub
Sub Beginner3()
Dim tripel(1 To 3) As Long, ii As Integer
Dim minimum As Long, Maximum As Long, mittel As Long
Dim pos As Integer
'Länge der Datenreihen bestimmen
With WorksheetFunction
For ii = 1 To 3
tripel(ii) = .Count(Worksheets("Versuch" & ii).Columns(3))
Next ii
'Minimale und maximale Datenreihenlänge bestimmen
minimum = WorksheetFunction.Min(tripel)
Maximum = WorksheetFunction.Max(tripel)
mittel = WorksheetFunction.Large(tripel, 2)
pos = .Match(Maximum, tripel, 0)
MsgBox "Maximum in Versuch" & pos
pos = .Match(mittel, tripel, 0)
MsgBox "Zweitgrößtes in Versuch" & pos
End With
End Sub
Reicht dir das aus?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich