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, 13:16
(Dieser Beitrag wurde zuletzt bearbeitet: 29.06.2018, 20: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)
Registriert seit: 13.04.2014
Version(en): 365
29.06.2018, 13:42
(Dieser Beitrag wurde zuletzt bearbeitet: 29.06.2018, 13: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
29.06.2018, 13:47
(Dieser Beitrag wurde zuletzt bearbeitet: 29.06.2018, 13: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!
|