Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1848to1852
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

Makro zum skalieren der x-Werte per min

Makro zum skalieren der x-Werte per min
11.10.2021 17:03:47
Andrej
Hallo Excel-VBA Experts!
Ich habe ein Makro dass alle Werte zw. der Start- und End-Zelle entsprechend dem min und max-Wert anpasst---skaliert.
Es geht so: Man gibt den gewünschten min-Wert in die erste Zelle ein sowie den Max-Wert in die letzte Zelle ein, dann werden alle Zellen inclusive min und max markiert und das Makro gestartet. Dabei werden alle Zellen zw. dem Min Und max-Wert entsprechend befüllt.
Mein Problem: Das wertvolle Makro kann es nur Reihenweise (ABCDE.....). Somit ist die Zellenanzahl stark limitiert, 600 Werte sind zu viel.
Nun meine Frage: Kann jemand das Makro so umbauen, dass es (auch) mit Spalten (1234567....) funktioniert!?
LGr! Andrej
Hier das bestehende Makro:

Sub xAchenScal()
If Not Selection.Rows.Count = 1 Then
' mehrere zeilen nicht behandelt
Exit Sub
End If
If Selection.Columns.Count 

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

Betreff
Datum
Anwender
Anzeige
AW: Makro zum skalieren der x-Werte per min
11.10.2021 17:16:02
Peter
Also erst mal vertauscht du die Begriffe Spalten (A,B,...) und Zeilen (1,2,...).
Dann: woher kommt dein Limit "600"? ein modernes Excel ab v2007 kann 2^14 = 16384 Spalten verarbeiten!? (vorher nur 2^8 = 256)
Wenn das immer noch nicht genügt kannst du natürlich Spalten und Zeilen tauschen - dann geht's bis 2^20 = 1048576 Zeilen...
Das ist dann doch ganz leicht? .Columns wird zu .Rows, Cells(rowStart, colStart + i) wird zu Cells(rowStart+1, colStart) usw. in diesem Sinne!?
AW: Makro zum skalieren der x-Werte per min
12.10.2021 08:51:28
Andrej
Erst mal vielen Dank für die rasche Hilfe!!!
Ich hab keine Chance, das Makro zum Laufen zu bringen. Ich hab alle cells in Rows umbenannt aber wußte es so nicht gehen wird.
Zum Verständnis, das Makro habe ich nicht selbst erstellt, sondern von meinem talentierten Exkollegen.
Daher muß ich mich entschuldigen, dass ich keine Ahnung von VBA habe!
Wenn du (ihr) mir helfen wollt, müsste ich dich (euch) bitten die Zeilen für mich umzuschreiben, da jegliche Änderung von mir zum Risiko wird.
meine Antworten: Ich habe extra gegoogelt um die Begriffe Spalten und Reihen richtig anzuwenden. Darum dieses mal horizontal und Vertikal :-)
Man kann tatsächlich 600 horizontale Zellen (ABCD...) erstellen! In meinem Fall wäre es trotzdem eine große Erleichterung wenn
das Makro auch vertikale Zellen 12345...) skalieren könnte. So spare ich mir das hin und her Transponieren.
Zur Info-Konkrete Anwendung: Wenn man ein Temperaturprofil einer Thermokamera exportiert erhält man Zellen x=Pixel, y=C°.
Um nun diese Temp.Kurve mit einer Simulierten Kurve (x=mm, y=C°) in einem Diagramm zu vergleichen , müssen die x=Pixel auf x=mm skaliert werden.
Dh. mit dem Makro kann man den Start- und Endpunkt der Kurve selbst bestimmen um die zu vergleichenden Kurven deckungsgleich zu bekomme.
Danke!!!
LGr, Anvdrej
Anzeige
vielleicht wäre es....
12.10.2021 09:38:31
Werner
Hallo,
....ein erster Schritt zur Lösung, alle Antworten zu lesen.
Gruß Werner
AW: vielleicht wäre es....
12.10.2021 11:26:12
Andrej
Vielen Dank Werner!!!!
Sorry, Ich habs nicht gleich verstanden wie das Forum funktioniert.
Wie auch immer, ich habs gleich getestet und es funktioniert super!!!!
Ich hoffe es nützt noch vielen Anderen.
Blöde Frage: Da ich ja die gewünschten Zellen vorher markiere und dabei vorgebe ob es eine horizontale - od. vertikale Zellenauswahl ist,
könnte excel doch selbst erkennen was es ist? Ich meine, einen Befehl dafür gibt es wohl nicht, oder?
Vielen , vielen Dank!
LGr, Andrej
AW: vielleicht wäre es....
12.10.2021 12:08:52
Werner
Hallo,

Option Explicit
Sub xAchenScal()
Dim rowStart As Long, rowEnd As Long, colStart As Long, i As Long
Dim colEnd As Long, startValue, endValue, stepValue As Double
If Selection.Columns.Count > 1 And Selection.Rows.Count > 1 Then Exit Sub
If Selection.Rows.Count  2 Then
rowStart = Selection.Cells(1, 1).Row
rowEnd = rowStart + Selection.Rows.Count - 1
colStart = Selection.Column
startValue = Cells(rowStart, colStart).Value
endValue = Cells(rowEnd, colStart).Value
stepValue = (endValue - startValue) / (Selection.Rows.Count - 1)
For i = 0 To (Selection.Rows.Count - 1)
Cells(rowStart + i, colStart).Value = startValue + (stepValue * i)
Next
ElseIf Selection.Columns.Count > 2 Then
colStart = Selection.Column
colEnd = colStart + Selection.Columns.Count - 1
rowStart = Selection.Row
startValue = Cells(rowStart, colStart).Value
endValue = Cells(rowStart, colEnd).Value
stepValue = (endValue - startValue) / (Selection.Columns.Count - 1)
For i = 0 To (Selection.Columns.Count - 1)
Cells(rowStart, colStart + i).Value = startValue + (stepValue * i)
Next
End If
End Sub
Gruß Werner
Anzeige
AW_Zeilen und Reihen Umkehr
12.10.2021 14:08:55
Andrej
Werner, ich bin sprachlos! Vielen Vielen DANK!!!
Ohne den Bogen überspannen zu wollen, habe ich da noch ein Makro (Zeilenumkehr) mit dem selben Problem. Es kann nur horizontale Zellen erfassen.
Damit kann man die Kurven Spiegeln, bzw. umdrehen. Ebenso nützlich um 2 od. mehrere Kurven zu vergleichen da die Messdaten oftmals Lageverkehrt sind.
Der x-Achenskalierer sowie der Zeilenumkehrer sind beide wertvolle Tools wenn es um Kurvenvergleiche geht.
Ich hab es versucht nach deinem Schema, aber ich schaffe es einfach nicht- ein falscher Eintrag und nix mehr geht.
Falls du die Geduld noch aufbringen kannst auch den Zellenumkehrer auf Vertikal+horizontal umzuformen, wäre ich dir sehr, sehr Dankbar!!!
Danke! LGr! Andrej
Hier der Zellenumkehrer in horizontaler Form:

Sub Zeilenumkehr_horizontal_ABC_to_CBA()
If Not Selection.Rows.Count = 1 Then
' mehrere zeilen nicht behandelt
Exit Sub
End If
If Selection.Columns.Count 

Anzeige
AW: AW_Zeilen und Reihen Umkehr
13.10.2021 09:10:07
Werner
Hallo,

Option Explicit
Sub Zeilenumkehr_horizontal_ABC_to_CBA()
Dim colStart As Long, colEnd As Long, rowStart As Long
Dim rowEnd As Long, i As Long, buffer As Variant
If Selection.Columns.Count > 1 And Selection.Rows.Count > 1 Then Exit Sub
If Selection.Rows.Count  2 Then
colStart = Selection.Column
rowStart = Selection.Cells(1, 1).Row
rowEnd = rowStart + Selection.Rows.Count - 1
For i = 0 To (Selection.Rows.Count / 2) - 1
buffer = Cells(rowEnd - i, colStart)
Cells(rowEnd - i, colStart).Value = Cells(rowStart + i, colStart).Value
Cells(rowStart + i, colStart).Value = buffer
Next i
ElseIf Selection.Columns.Count > 2 Then
colStart = Selection.Column
colEnd = colStart + Selection.Columns.Count - 1
rowStart = Selection.Row
For i = 0 To (Selection.Columns.Count / 2) - 1
buffer = Cells(rowStart, colEnd - i)
Cells(rowStart, colEnd - i) = Cells(rowStart, colStart + i).Value
Cells(rowStart, colStart + i).Value = buffer
Next i
End If
End Sub
Gruß Werner
Anzeige
AW: Zeilen und Reihen Umkehr
13.10.2021 11:06:13
Andrej
Danke!, Werner !!!
Habe eine riesen Freude!!! Ist für mich neu , dass man in einem Forum als Anfänger mal nicht verarscht wird! Das musste ich am Ende noch erwähnen.
Fasse zusammen:
Alles funktioniert ! - Nun kann jede Kurve separat in x-Richtung gezoomt od. verkleinert (Makro-x-Achsen skalieren) ,
sowie auch gespiegelt (Makro-Zellenumkehr) werden.
Perfekt um 2 Kurven (zB.: Simulation vs. Messdaten) , die aus unterschiedlichen Quellen stammen , in einem Diagramm zu vergleichen.
Danke!
LGr! Andrej
Gerne u. Danke für die Rückmeldung. o.w.T.
13.10.2021 12:51:28
Werner
AW: Makro zum skalieren der x-Werte per min
11.10.2021 17:35:50
Werner
Hallo,
wie schon geschrieben Zeilen und Spalten im Code tauschen.

Sub xAchenScal()
Dim rowStart As Long, rowEnd As Long, colStart As Long
Dim startValue, endValue, stepValue As Double
If Selection.Columns.Count > 1 Then Exit Sub
If Selection.Rows.Count 
Gruß Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige