Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kann man dieses Makro mit WorksheetFunction vereinfachen?

Forumthread: Kann man dieses Makro mit WorksheetFunction vereinfachen?

Kann man dieses Makro mit WorksheetFunction vereinfachen?
23.09.2024 10:12:54
Florian
Hallo

Kann man folgende Function "KehrwertBerechnen(Rechteck)" vereinfachen?
Kann man das vielleicht mit einer WorksheetFunction machen?
Kann man das vielleicht mit einer for each-Schleife machen?

Gergeben ein Code zur Berechnung des Kehrwertes von jedem Eintrag einer 2-dim Matrix. Die Matrix steht nicht in einem Tabellenblatt, sondern ist das Ergebis eines Makros. Das ist hier im Makro "Grundeinstellung" dargestellt.

Sub Grundeinstellung()

Dim Matrix(1 To 3, 1 To 2) As Double
Dim Kehrwert

Matrix(1, 1) = 2: Matrix(1, 2) = 4
Matrix(2, 1) = 16: Matrix(2, 2) = 32
Matrix(3, 1) = 1: Matrix(3, 2) = 7

Kehrwert = KehrwertBerechnen(Matrix)
Stop
End Sub

Function KehrwertBerechnen(Rechteck)
Dim Zeile As Integer, Spalte As Integer, a
a = Rechteck
For Zeile = LBound(a, 1) To UBound(a, 1)
For Spalte = LBound(a, 2) To UBound(a, 2)
a(Zeile, Spalte) = 1 / a(Zeile, Spalte)
Next Spalte
Next Zeile
KehrwertBerechnen = a
End Function



LG, Flo
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Kann man dieses Makro mit WorksheetFunction vereinfachen?
23.09.2024 12:27:05
Yal
Hallo Florian,

zweifaches nein:
- in Fall einer Verarbeitung von einem "Matrix" müssten die Werte zuerst in einem Bereich der Arbeitsmappe abgelegt werden.
- es gibt keine Excel-Formel für 1/x, die man als Worksheetfunction ausrufen kann

Davon abgesehen eine Vereinfachung in der Schreibeweise ist oft mit eine Verkomplizierung in der Handlung, was meist Performance-Einbuss bedeutet.
Dein Code ist bereits optimal.

Einzige "ich würde so machen":
- die Schleifen-Laufvariable 1-buchstabig (ist nur Usus, kein Pflicht)
- Parameter in "ByVal" übergeben: es wird auf eine Kopie gearbeitet, man braucht keine separate lokale Variable
- Transformation auf sich selbst: was gerade gelesen wurde, wird durch Ergebnis überschrieben

Function KehrwertBerechnen(ByVal Rechteck)

Dim Z As Integer
Dim S As Integer
For Z = LBound(Rechteck, 1) To UBound(Rechteck, 1)
For S = LBound(Rechteck, 2) To UBound(Rechteck, 2)
Rechteck(Z, S) = 1 / Rechteck(Z, S)
Next S
Next Z
KehrwertBerechnen = Rechteck
End Function


VG
Yal
Anzeige
AW: Kann man dieses Makro mit WorksheetFunction vereinfachen?
23.09.2024 17:33:00
Florian
Danke, Yal, für Deine Antwort. und den Tipp mit ByVal. Das macht die Sache übersichtlicher.
LG, Flo
AW: Kann man dieses Makro mit WorksheetFunction vereinfachen?
23.09.2024 20:57:32
snb
Oder

Sub M_snb()

ReDim sn(2, 1)

For j = 0 To (UBound(sn) + 1) * (UBound(sn, 2) + 1) - 1
sn(j \ (UBound(sn, 2) + 1), j Mod (UBound(sn, 2) + 1)) = Choose(j + 1, 2, 4, 16, 32, 1, 7)
Next
Cells(1, 4).Resize(UBound(sn) + 1, UBound(sn, 2) + 1) = sn

For j = 0 To (UBound(sn) + 1) * (UBound(sn, 2) + 1) - 1
sn(j \ (UBound(sn, 2) + 1), j Mod (UBound(sn, 2) + 1)) = 1 / sn(j \ (UBound(sn, 2) + 1), j Mod (UBound(sn, 2) + 1))
Next

Cells(5, 4).Resize(UBound(sn) + 1, UBound(sn, 2) + 1) = sn
End Sub
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige