Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
428to432
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
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Rangliste per Makro

Rangliste per Makro
17.05.2004 08:01:15
Daniel
Hallo Zusammen!
Ich möchte eine Rangliste erstellen.
Das Problem ist, dass sich die Ausgansdaten verändern und ich daher eine Anpassung der Rangliste an die Datenmenge möchte.
Mir wurde hier im Forum freundlicherweise schon einmal bzgl. eines analogen Problem weitergeholfen. Leider kenne ich mich kaum mit VBA aus, und schaffe es nicht, das analoge Problem auf die neue Situation zu übertragen.
Ich hoffe mir kann nochmal jemand helfen.
Also:
Die Rangliste soll sich per Makro an die Menge (Zeilen und Spalten) der Ausgangsdaten des Blattes "Werte" anpassen.
Für das besse Veständnis habe ich eine Bsp. Datei angehängt.
Das Makro, das analoge Dienste zur Summenberechnung leistet ist folgendes.
(Die Sheets stimmen nicht mit der Beispieldatei überein)
Vielen Dank für Hilfe!

Sub Rechnen()
Dim i%, k%, IntCnt%, LRow%
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim ws4 As Worksheet
Dim ws5 As Worksheet
Set ws1 = Worksheets("1")
Set ws2 = Worksheets("2")
Set ws3 = Worksheets("3")
Set ws4 = Worksheets("4")
Set ws5 = Worksheets("5")
'Lösche
ws4.Cells.ClearContents
ws5.Cells.ClearContents
'Übertrage Erste Spalte
ws1.Columns("A:A").Copy ws4.Range("A1")
ws2.Columns("A:A").Copy ws5.Range("A1")
ws1.Rows("1:1").Copy ws4.Range("A1")
ws2.Rows("1:1").Copy ws5.Range("A1")
IntCnt = Sheets("Steuerung").Range("A1").Value
With ws1
For j = 2 To .Cells(1, Columns.Count).End(xlToLeft).Column
k = 0
LRow = .Cells(Rows.Count, j).End(xlUp).Row
For i = 3 To LRow - IntCnt + 1
k = k + 1
If ws3.Cells(IntCnt + k + 1, 2).Value <> "" Then
'Hier wird die Zelle definiert ,1 heißt A'
ws4.Cells(IntCnt + k + 1, j) = _
Application.Sum(.Range(.Cells(i, j), .Cells(i + IntCnt - 1, j))) * 100 / _
ws3.Cells(IntCnt + k + 1, 2)
End If
Next i
Next j
End With
End Sub

https://www.herber.de/bbs/user/6428.xls

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rangliste per Makro
kdosi
Public

Sub SumMitUsedRange()
Dim used_range, ohne_1_sp_zl
Set used_range = ActiveSheet.UsedRange
' um zu sehen, was ActiveSheet.UsedRange macht
used_range.Select
Set ohne_1_sp_zl = used_range.Offset(1, 1)
ohne_1_sp_zl.Select
' weiter kann man mit dem Bereich ohne der ersten Splalte und der ersten Zeile arbeiten
' oder man kann den Bereich noch veraendern (die Groesse)
Set ohne_1_sp_zl = used_range.Offset(1, 1).Resize(used_range.Rows.Count - 1, used_range.Columns.Count - 1)
ohne_1_sp_zl.Select
MsgBox "Sum = " & Application.WorksheetFunction.Sum(ohne_1_sp_zl), vbInformation, _
"Bereich : " & ohne_1_sp_zl.Address(RowAbsolute:=False, ColumnAbsolute:=False)
End Sub

Anzeige
AW: Rangliste per Makro
17.05.2004 09:38:45
Daniel
Hallo!
Irgendwie verstehe ich Dein Posting nicht.
Wie kann ich das nutzen?
Grüße
Daniel
AW: Rangliste per Makro
kdosi
Hallo Daniel,
erstmals Alt+F11,
dann menu insert/module,
dann copy den Code und paste ins modul :-)
die VBE Window so verkleinern, damit man beide Windows (auch Excel Window) sehen kann
(im Excel sollte ein Sheet mit Daten sien)
dann den Cursor irgendwo in den Code postieren und die Taste F8 drucken
die Taste F8 fuer jede Zeile des Code drucken
beobachten was passiert :-) und dann nur noch den Code so anpassen, wie Du es brauchst...
AW: Rangliste per Makro
Daniel
Hallo kdosi,
wie ich den cose einfüge usw. ist mir klar.
Aber wie kann ich dieses Makro für meine Bedürfnisse nutzen?
Wie soll die automatische Erstellung der Ranglist erfolgen?
Grüße
Daniel
Anzeige
AW: Rangliste per Makro
kdosi
Na ja, ich dachte dass Du die Methode UsedRange fuer diese Zwecke benutzen koenntest? Moeglicher Weisse habe ich Dein Problen nicht verstanden? Ich habe mir nur den Code den Du in Deiner Frage hast angeschaut und habe mir gedacht, das man so was viel einfacher machen kann, un zwar mit UsedRange :-). Du brauchst etwas anderes?
AW: Rangliste per Makro
17.05.2004 10:53:44
Daniel
Hi,
wenn es einfach geht ist es mir natürlich auch recht.
Was ich brauche ist eigentlich nur eine Anpassung des Makros.
Statt der Berechnung des Quotienten
ws4.Cells(IntCnt + k + 1, j) = _
Application.Sum(.Range(.Cells(i, j), .Cells(i + IntCnt - 1, j))) * 100 / _
ws3.Cells(IntCnt + k + 1, 2)
brauche ich vom Prinzip her nur die Rang Funktion, wie sie im sheet genutzt wird.
Ziel ist eine Anpassung auf veränderte Daten. Wenn statt 100 plötzlich 1500 Spalten genutzt werden. Um da einem manuellen Anpassen zu entgehen brauche ich das makro.
Also eigentlich muss nur die obige Berechnung druch die Rank funtion ersetzt werden. irgendwie bekomm ich das aber nicht auf die reihe.
Grüße
Daniel
Anzeige
Kann mir doch jmd.helfen?
18.05.2004 14:24:15
Daniel
Hallo!
Vielleicht kann mir doch jemand helfen?
Grüße
Daniel
AW: Kann mir doch jmd.helfen?
20.05.2004 16:11:37
André
Hallo Daniel,
hier ist das angepasste Makro. Bitte mal ausprobieren. Es ist möglich, die Excel-Tabellenfunktion ganz normal im VBA zu benutzen.
https://www.herber.de/bbs/user/6565.xls
Viele Grüße
André

Sub Rechnen()
Dim i%, k%, IntCnt%, LRow%, intClm%
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Werte")
Set ws2 = Worksheets("Rangliste")
''Lösche
ws2.Cells.ClearContents
'Übertrage Erste Spalte
ws1.Columns("A:A").Copy ws2.Range("A1")
ws1.Rows("1:1").Copy ws2.Range("A1")
IntCnt = Sheets("Steuerung").Range("A1").Value
intClm = ws1.Cells(1, Columns.Count).End(xlToLeft).Column   'Anzahl Spalten
With ws1
For j = 2 To intClm
k = 0
LRow = .Cells(Rows.Count, j).End(xlUp).Row      'Anzahl Zeilen
For i = IntCnt + 2 To LRow
ws2.Cells(i, j).Value = Application.WorksheetFunction.Rank(.Cells(i, j).Value, .Range(.Cells(i, 2), .Cells(i, intClm)), 0)
Next i
Next j
End With
End Sub

Anzeige
AW: Kann mir doch jmd.helfen?
21.05.2004 09:04:30
Daniel
Hallo Andre,
vielen Dank für die Hilfe.
Ich werde es mir aber erst genau am Montag ansehen können.
Dann gebe ich Dir nochmal eine Rückmeldung.
Bis dann und schöne Tage,
Daniel
AW: Kann mir doch jmd.helfen?
21.05.2004 15:21:11
Daniel
Hallo Andre,
konnte es doch schon ausprobieren:
Leider kommt- wenn ich den Code in die Originaltabelle einfüge und die Worksheets abändere- der Fehler "Die Rank Eigenschaft des WorksheetFunction Objekts kann nicht zugeordent werden?
Was ist das?
Grüße
Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige