Registriert seit: 04.07.2017
Version(en): 2010
Für Forum AbstrichProg.VBA Beide+ ForSchleife.xlsm (Größe: 23,67 KB / Downloads: 3)
Hallo liebe Leute!
Kann mir bitte jemand erklären, warum in "Range" 1, 0, 2 steht und was "Match" bedeutet?
Range(Zeile, Spalte)?
Das Programm funktioniert, aber ich will auch wissen warum.
Cells(WorksheetFunction.Match(WorksheetFunction.Large _
(Range("b:b"), 1 ), Range("b:b"), 0), 2)
[ Bild bitte so als Datei hochladen: Klick mich!] [ Bild bitte so als Datei hochladen: Klick mich!] [ Bild bitte so als Datei hochladen: Klick mich!]
Zum besseren Verständnis Datei im Anhang.
Herzlichen Dank im Voraus,
Atnik
Registriert seit: 02.12.2017
Version(en): Office 365
29.06.2018, 12:16
(Dieser Beitrag wurde zuletzt bearbeitet: 29.06.2018, 19:53 von WillWissen.
Bearbeitungsgrund: Formatierung
)
Code: (WorksheetFunction.Small(Range("b:b"), 1), Range("b:b"), 0), 2)) _
+ (Cells(WorksheetFunction.Match(WorksheetFunction.Large _
(Range("b:b"), 1), Range("b:b"), 0), 2))
Das ist eine zusammengesetzte formel
WorksheetFunction.Small(Range("b:b"), 1) = KKleinste(B:B;1)
und
WorksheetFunction.Match(WorksheetFunction.Large(Range("b:b"), 1), Range("b:b"), 0) = Vergleich(Länge(B:B;1);B:B;0)
Eine Menge reden, aber nichts sagen können viele...
Registriert seit: 13.04.2014
Version(en): 365, 2019
29.06.2018, 12:42
(Dieser Beitrag wurde zuletzt bearbeitet: 29.06.2018, 12:46 von BoskoBiati.)
Hi,
wenn man den Cursor in das Wort small setzt und F1 drückt öffnet sich die Hilfe!
Zitat:Excel-Entwicklerreferenz
WorksheetFunction.Small-Methode
Gibt den k-kleinsten Wert in einem Datensatz zurück. Mit dieser Funktion können Sie Werte mit einer bestimmten relativen Bedeutung in einem Datensatz zurückgeben.
Syntax
Ausdruck.Small(Arg1, Arg2)
Ausdruck Eine Variable, die ein WorksheetFunction-Objekt darstellt.
Parameter
Name
Erforderlich/Optional
Datentyp
Beschreibung
Arg1
Erforderlich
Variant
Array – ein Array oder Bereich von numerischen Daten, für das bzw. den der k-kleinste Wert ermittelt werden soll.
Arg2
Erforderlich
Double
K – die Position (ausgehend vom kleinsten Wert) im Array oder im Bereich der zurückzugebenden Daten.
Rückgabewert
Double
Anmerkungen- Wenn Array leer ist, gibt SMALL den Fehlerwert #NUM! zurück.
- Wenn k ≤ 0 ist oder die Anzahl der Datenpunkte überschreitet, gibt SMALL den Fehlerwert #NUM! zurück.
- Wenn N die Anzahl der Datenpunkte in Array darstellt, entspricht SMALL(Array,1) dem kleinsten Wert, und SMALL(Array,n) entspricht dem größten Wert.
© 2010 Microsoft Corporation. Alle Rechte vorbehalten
Für large gilt dann das Gegenteil (Kgrösste)
Wenn Du den Code per F8 durcharbeitest, wirst Du feststellen, dass bei jedem -1 die größte und die kleinste Zahl der Spalte B addiert werden und unter die Summe in die aktuelle Zeile geschrieben wird. Bei einer 1 werden die größte und die kleinste Zahl in B gelöscht.
Code: Match(WorksheetFunction.Large (Range("b:b"), 1), Range("b:b"), 0)
übersetzt in Formel:
Code: =Vergleich(Kgrösste(B:B;1);B:B;0)
den Code kann man noch kürzen:
Code: Sub Abstreichen()
Dim i As Integer
Dim n As Single
For i = 11 To 20
If Cells(i, 1) = 1 Then
Cells(WorksheetFunction.Match(WorksheetFunction.Small _
(Range("b:b"), 1), Range("b:b"), 0), 2).Clear
Cells(WorksheetFunction.Match(WorksheetFunction.Large _
(Range("b:b"), 1), Range("b:b"), 0), 2).Clear
ElseIf Cells(i, 1) = -1 Then
Cells(i, 2) = (Cells(WorksheetFunction.Match _
(WorksheetFunction.Small(Range("b:b"), 1), Range("b:b"), 0), 2)) _
+ (Cells(WorksheetFunction.Match(WorksheetFunction.Large _
(Range("b:b"), 1), Range("b:b"), 0), 2))
End If
Next
If Cells(20, 6).Value = 5 Then Range("a1:a5").Copy Range("B6")
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 04.07.2017
Version(en): 2010
Hallo Frogger!
Vielen Dank für die rasche Antwort.
Kannst Du mir bitte sagen was die 2 bedeutet?
(Range("b:b"), 1), Range("b:b"), 0), 2).Clear
Herzlichen Dank und viele Grüße aus Wien!
Atnik
Registriert seit: 13.04.2014
Version(en): 365, 2019
29.06.2018, 12:47
(Dieser Beitrag wurde zuletzt bearbeitet: 29.06.2018, 12:51 von BoskoBiati.)
Hallo,
die Antwort von Frogger ist nicht korrekt! Siehe meinen vorherigen Beitrag!
Außerdem lautet der Term richtig:
Code: (Cells(WorksheetFunction.Match(WorksheetFunction.Large(Range("b:b"), 1), Range("b:b"), 0), 2)).Value
In Formel:
Code: =Indirekt(Adresse(Vergleich(Kgrösste(B:B;1);B:B;0);2))
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 04.07.2017
Version(en): 2010
Hallo BoskoBiati!
Vielen Dank für die rasche Hilfe.
Liebe Grüße aus Wien,
Atnik
Registriert seit: 02.12.2017
Version(en): Office 365
Hoppla Entschuldigung.. :29: das "Large" hab ich verwechselt und sonst hab ich das Gesamte nur zerlegt..
komplett übersetzt ist es natürlich so wie bei BoskoBiati!
Eine Menge reden, aber nichts sagen können viele...
|