Clever-Excel-Forum

Normale Version: Höchsten Wert ermitteln und niedrigere löschen (VBA)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

@joshua
Um es noch einmal klar zu stellen, ich wollte keinen wertenden Vergleich anstellen (ausser mit der Aussage das attilas Makro das effektiver Excel Makro ist).
Ich wollte dir nur aufzeigen, dass die Makros unterschiedliche Verhalten haben, auch wenn sie in deinem Beispiel die gleichen Ergebnisse liefern.
Du solltest sie nicht einfach übernehmen wenn sie nicht vollständiog erklärt oder von dir verstanden wurden.

@atilla
1) Du löscht keine Zeilen im Sinne des Kontextmenus "Zeilen löschen", sondern du entfernst den Inhalt dieser Zellen(ClearContents). Ob du zuerst den Inhalt des gesamten Bereiches löschst und dann mit weniger Daten überschreibst oder den gesamte Bereich überschreibst mit Leerzeilen am Ende ist für die Aussage, dass die Formate nicht mitverschoben werden doch uninteressant.

2) Mein Makro kopiert und leert auch Spalten nach der 17. Spalte. Die von dir aufgeführte Konstante wird nur genutz für die Ermittlung des Maximums, da ich innerhalb des Arrays nicht mit Q arbeiten kann..

3) Wenn ich den Begriff " CurrentRegion" parat gehabt hätte, hätte ich ihn auch genutz.
Es ist doch wahrscheinlicher, dass neben und unter einer Liste noch zusätzliche Daten stehen, als dass Leerzeilen innerhalb der Liste vorhanden sind.
Auf jeden Fall muss Joshua entscheiden was das Makro berücksichtigen soll.
Hast du überhaupt versucht das Makro zo verstehen ?


Code:
Sub M_snb()
    sn = sheet1.Range("A1:Q1").Offset([match(max(Q1:Q200),Q1:Q200,0)] - 1).Value
    sheet1.cells(1).currentregion.offset(1).clearcontents
    sheet1.cells(1,2).resize(,17)=sn
End Sub
Hallo snb,


man kann auch zurückfragen, hast Du versucht die Aufgabe zu verstehen.

Man muss offensichtlichen Laien etwas mehr entgegenkommen, denke ich.


Folgendes ist gegeben:

Arbeitsblatt mit dem Namen 'Tabelle2'
 ABCDEFGHIJKLMNOPQ
1                 
2AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter1
3AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter1
4AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter2
5AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter2
6AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter2
7AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter13
8AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter23
9AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter33
10AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter43
11AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter1
12AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter1
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Dein Makro in deutsche Schreibweise angepasst :

Code:
Sub M_snb()
   sn = Tabelle1.Range("A1:Q1").Offset([match(max(Q1:Q200),Q1:Q200,0)] - 1).Value
   Tabelle1.Cells(1).CurrentRegion.Offset(1).ClearContents
   Tabelle1.Cells(1, 2).Resize(, 17) = sn
End Sub


und das ist das Ergebnis:

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDEFGHIJKLMNOPQR
1 AutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfterAutoMotorGetriebeLüfter13
2                  
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Ganz schön ätzend dieser Etzel.

Aus  Wikipedia zu Attila:
Zitat:Als legendäre Figur König Etzel  lebte Attila ...
Es geht um die Methode; anpassen hilft immer beim Verstehen eines Codes.
Vorschläge sind nicht nur für der TS, doch für alle heutige und künftige Besucher (nicht nur Laien).
NB. VBA ist nichts für Laien.

Ich bin sicher dass der TS keine Mühe geleistet hat den Vorschlag zu verstehen.

Code:
Sub M_snb()
   Range("A2:Q2") = Range("A1:Q1").Offset([match(max(Q1:Q100),Q1:Q100,0)-1]).Value
   Range("A3:Q200").ClearContents
End Sub
Seiten: 1 2