Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1900to1904
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
Inhaltsverzeichnis

letzte Zahl ermitteln

letzte Zahl ermitteln
06.10.2022 11:10:40
Fred
Hallo Excel Experten,
ich möchte den augenblicklichen Anteil (letzte Zahl der Spalte "CS") vom Durchschnitt" anzeigen.
Die letzte Zahl der Spalte 97 ("CS") ermittel ich gefühlt "zu aufwendig":

Sub anteil_MW()
Dim lngZ As Long
lngZ = Columns(97).Find(What:="*", LookIn:=xlValues, LookAt:=xlPart, _
SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row ' letzte Zahl in .. Spalte
LZ_1 = ThisWorkbook.Sheets("Auswertung").Cells(Rows.Count, 97).End(xlUp).Row
Sheets("Auswertung").Range("cs" & LZ_1) = Sheets("Auswertung").Range("cs" & lngZ) / Application.Average(Range(Cells(5, 97), Cells(500, 97)))
End Sub
Frage:
Kann "IngZ" gekürzt werden?
Gruss
Fred

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Alles OK, aber 1 Zeile weiter unten anzeigen !
06.10.2022 11:22:57
NoNet
Hi Fred,
der Code ist OK und kaum mehr zu kürzen.
Lediglich das Ergebnis sollte wohl 1 Zeile weiter unten eingetragen werden, oder ?
also : LZ_1 = ThisWorkbook.Sheets("Auswertung").Cells(Rows.Count, 97).End(xlUp).Row+1
Salut, NoNet
AW: Alles OK, aber 1 Zeile weiter unten anzeigen !
06.10.2022 11:27:29
Fred
Hallo NoNet,
alles OK,- das Ergebnis soll letztlich einen Wert überschreiben.
Danke für deine Rückmeldung!
Gruss
Fred
AW: Alles OK, aber 1 Zeile weiter unten anzeigen !
06.10.2022 19:26:47
Yal
Hallo Z'samma,
der Code ist ok, aber nicht optimal: Man benutzt die Funktion Find, wenn man eine bestimmte Wert sucht. "LookIn:=xlValues" bedeutet nicht, dass nach Zahlen gesucht wird, sondern nach alles was keine Formel ist. Siehe die Such-Funktion per Hand, "Suchen in": Formeln, Werte, Kommentare.
Wenn man etwas an einer bestimmte Position sucht, wird es mit

lngZ = Cells(Rows.Count, 97).End(xlUp).Row
schneller.
Daher handelt sich bei

Sheets("Auswertung").Range("cs" & LZ_1)
Sheets("Auswertung").Range("cs" & lngZ)
genau dieselbe Zelle und dementsprechend denselben Wert.
Warum Verwendest Du
einmal Columns(97) ohne Qualifier
einmal Sheets("Auswertung").Range(..) mit Arbeitsblatt-Verweis und
einmal Thisworkbook.Sheets("Auswertung").Cells (..) volle Pulle: Arbeitsmappe und Blatt
Konsequenter ganz oben
With ThisWorkbook.Worksheets("Auswertung")
dazwischen .Range(..), .Columns(..), oder .Cells(..)
und dann
End With
Man kann übrigens die Spaltenbuchstaben in Cells verwenden, also "CS" anstatt 97.
Alles zusammen würde so aussehen:

Sub anteil_MW()
With ThisWorkbook.Worksheets("Auswertung")
.Cells(Rows.Count, "CS").End(xlUp) = .Cells(Rows.Count, "CS").End(xlUp).Value  / Application.Average(.Range("CS5:CS500"))
End With
End Sub
Scheinbar konsequenter, aber um Range(CS5:CS500) nicht in der Luft hängen zu lassen, muss man unschön tricksen (Worksheet ist immer der Parent eines Ranges):

Sub anteil_MW()
With ThisWorkbook.Worksheets("Auswertung").Cells(Rows.Count, "CS").End(xlUp)
.Value = .Value  / Application.Average(.Parent.Range("CS5:CS500"))
End With
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige