Holen Sie sich maximale Wert der Spalten in Excel mit makro
Erstmal hab ich keine Ahnung von schreiben von Makros in excel, aber jetzt habe ich zu schreiben Sie einen code für einen Freund. So hier gehen wir.
In meinem excel-sheet habe ich eine Tabelle, die hält einige Produzenten, die als Spalten und 12 Monate im Jahr als Zeilen. In Ihrer sich kreuzenden Zelle geschrieben wird, die Menge der hergestellten Produkte durch die Hersteller in diesem Monat. Jetzt brauche ich, um zu finden, die maximalen und minimalen Werte der produzierten waren in jedem Monat und Ausgabe der Produzenten der waren.
Ich fand einen code für ein ähnliches problem, aber ich verstehe es nicht deutlich, und es hat Fehler.
Hier ist der code:
Sub my()
Dim Rng As Range, Dn As Range, Mx As Double, Col As String
Set Rng = Range(Range("A1"), Range("A6").End(xlUp))
ReDim ray(1 To Rng.Count)
For Each Dn In Rng
Mx = Application.Max(Dn)
Select Case Mx
Case Is = Dn.Offset(, 0): Col = "A"
Case Is = Dn.Offset(, 1): Col = "B"
Case Is = Dn.Offset(, 2): Col = "C"
Case Is = Dn.Offset(, 3): Col = "D"
End Select
ray(Dn.Row - 1) = Col
Next Dn
Sheets("Sheet2").Range("A2").Resize(Rng.Count) = Application.Transpose(ray)
End Sub
Bekomme ich die folgende Fehlermeldung:
Run-time error'9': Subscript out of range.
Also meine Frage ist, was hat dieser Fehler zu bedeuten und was muss ich ändern, in diesem code zu arbeiten?
EDIT1:
OK, jetzt ist der Fehler Weg. Aber wo bekomme ich die Ergebnisse?
EDIT2
Ich weiß diese Zeile ist verantwortlich für das eintragen der Ergebnisse in den angegebenen Ort, aber ich kann nicht sehen, wie Sie nach der Ausführung. Was ist falsch mit, dass?
InformationsquelleAutor ArVan | 2011-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fehler bedeutet, dass das array, das Sie zugreifen möchten, wurde nicht definiert, enthält die Ordnungszahl, die Sie suchen: Zum Beispiel Array-10 Positionen 0-9 also, wenn ich versuche, access array(10) es wäre zu werfen, dass die Fehler-oder-Arrays(-1) es würde werfen, dass Fehler.
Ich kann mich nicht erinnern, ob excel ist 0 oder 1 basierte arrays.
Ggf. ändern
zu
Sheets("Sheet2").Range("A2").Resize(Rng.Count) = Application.Transpose(ray)
? Bedeutet es, dass die Ergebnisse werden schriftlich in einer Zeile in Tabelle2 meiner excel-Datei?Es bedeutet, dass die Transposition erfolgt auf (ray) abgelegt werden, beginnend in Tabelle2.A2. Es kann dauern, mehr als das zu Rendern; aber es wird beginnen in A2 und gehen von dort aus basierend auf der transpose getan (ray)
Ich dachte so, aber ich kann nicht sehen keine Ergebnisse 🙁
InformationsquelleAutor xQbert
Brauchen Sie nicht VBA (makro), dies zu tun. Es kann getan werden, mithilfe einer arbeitsblattformel.
E. g.
Wenn Ihr Produzenten P1,P2,P3,P4 und dein Blatt sieht wie folgt aus:-
Folgende Formel in den Zellen platziert F2,F3,F4,... Holen Sie sich die besten Produzenten in jedem Monat.
In der Regel ist es besser, zu versuchen und verwenden Sie die integrierte in den Excel-Funktionen, soweit möglich. Resort auf VBA nur, wenn Sie wirklich brauchen, um. Auch wenn Sie auf der top-Produzent/Monat Daten für einen anderen Betrieb ist nur möglich in VBA, mindestens der top-Produzent/Monat Daten-Ableitung ist für Sie getan, indem Sie das Arbeitsblatt, das vereinfacht die VBA benötigt für den gesamten Prozess.
Zur Umsetzung einer Reihe kann auch durchgeführt werden mit einem Arbeitsblatt-Formel mithilfe der TRANSPOSE() Funktion.
BTW - ich bin mir nicht sicher, was Sie tun möchten, wenn zwei Hersteller die gleiche Ausgabe Wert. In der VBA-Beispiel in deiner Frage, die Logik scheint zu sein:- wenn zwei Hersteller sind gemeinsame top in einem Monat, wählen Sie die erste begegnet. Die Formel die ich gegeben habe, sollten die oben replizieren diese Logik.
In diesem Fall, a) ich schlage vor, dass Ihr Freund, versucht die übung, Sie gehen nicht zu viel lernen, wenn Sie Ihre Hausaufgaben machen, für Sie und b) sowie eine VBA-Lösung, wie etwa die Einreichung einer saubereren, effizienteren, Formel-basierte Lösung für das extra markiert? 😉
a) meine Freundin nicht brauchen, um das zu lernen, glaube ich 🙂 b) Nein, es nicht Zählung als extra markiert. Es hat zu tun mit VBA, weil es Ihr Thema.
InformationsquelleAutor Adam Ralph
Benutzt habe ich diese Funktionen Recht umfangreich, und Sie sind sehr zuverlässig und schnell:
Geben Sie eine Referenz (ex.
"A2"
) und es wird wieder die gefüllten Zellen nach unten oder rechts, bis leere Zelle gefunden wird.Wählen Sie mehrere verkauft normalerweise mache ich so etwas wie
InformationsquelleAutor ja72