Registriert seit: 19.08.2017
Version(en): 2016
Hallo
Ich bräuchte etwas Hilfe beim sortieren von meinen Daten. Ich habe circa eine 300x300 Matrix die wie folgt aussieht:
Ein Datensatz umfasst immer zwei Spalten, die x und y Koordinaten darstellen. In der ersten Zeile der Matrix steht ein Zeitpunkt (z.b 2.270) in der ersten Spalte steht der Zeitstrahl (also von 0.000, 0.010, 0.020,... usw).
Ich würde gerne pro Datensatz die X und y Koordinaten zum zugehörigen Zeitpunkt in der ersten Spalte finden und um diesen herum ein Intervall von +-0.20 Sekunden markieren oder ausschneiden.
Heißt ich bräuchte irgendwas, wie suche in der ersten Spalte den Wert aus erster Zeile und gehe auf dieser Höhe in die entsprechende Spalten zurück
Es wäre wirklich super toll, wenn mir jemand weiter helfen könnte :)
Liebe Grüße
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Nina,
hier mal ein Rohbau. Folgender Code kommt in das schon vorhandene VBA-Modul des Tabellenblattes(Rechtsklick auf den Tabellenreiter - Code anzeigen):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Dim varM As Variant
If Target.Address = "$A$1" Then
varM = Target.CurrentRegion.Value
For i = 2 To UBound(varM)
If CDbl(varM(i, 1)) >= CDbl(varM(1, 1)) - 0.02 Then Exit For
Next i
If i <= UBound(varM) Then
Rows(i).Resize(Application.Min(5, UBound(varM) - i + 1), UBound(varM, 2)).Select
End If
End If
End Sub
Code eingefügt mit: Excel Code JeanieGruß Uwe
Registriert seit: 19.08.2017
Version(en): 2016
Vielen Dank für die schnelle Antwort!!
Wenn ich den Code eingegeben habe, wie kann ich ihn denn dann auf alle Spalten hinweg ausführen :)?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
(19.08.2017, 13:46)Nini schrieb: Vielen Dank für die schnelle Antwort!!
Wenn ich den Code eingegeben habe, wie kann ich ihn denn dann auf alle Spalten hinweg ausführen :)?
sobald Du in A1 etwas änderst, "springt" das Makro an.
Gruß Uwe
Registriert seit: 19.08.2017
Version(en): 2016
Irgendwie bekomm ich das makro nicht zum Laufen
In der Zeile If CDbl(varM(i, 1))... Zeigt es mir zb auch einen Fehler an
Leider weiß ich nicht was die Befehle bedeuten, die in der Zeile stehen. Nur dass es wohl die Definition der Länge des Intervall ist. Was bedeutet denn varM?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
19.08.2017, 19:31
(Dieser Beitrag wurde zuletzt bearbeitet: 19.08.2017, 19:32 von Kuwer.)
Hallo Nini,
leider kenne ich Dein Tabellenblatt nicht und weiß somit auch nicht, welche Daten wo stehen.
Schau dazu bitte mal
hier.
Gruß Uwe
Registriert seit: 19.08.2017
Version(en): 2016
Muss ich dass der Code funktioniert noch etwas installieren bzw runterladen?
Ich hab mal versucht einen kleinen Teil der Tabelle hier hochzuladen, ich hoffe das klappt.
Dann siehst du kurz wie das strukturiert ist
Dankeschön ::)
Mappe1.csv (Größe: 804 Bytes / Downloads: 3)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
19.08.2017, 23:49
(Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2017, 13:11 von Kuwer.
Bearbeitungsgrund: Code ergänzt
)
Hallo Nini,
nach Deiner Datei gehe ich davon aus, dass die Zelle mit der Suchzeit nicht A1, sondern B4 ist.
Ersetze den bisherigen Code durch folgenden:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dblSuchwert As Double
Dim i As Long
Dim varM As Variant
If Target.Address = "$B$4" Then 'Zelle, in der der Suchwert eingetragen wird. Hier ist sie auf B4 festgelegt
If IsNumeric(Target.Value) Then 'wenn eine Zahl eingegeben wurde, geht es weiter
dblSuchwert = Target.Value
varM = Target.CurrentRegion.Value
For i = 5 To UBound(varM)
If IsNumeric(varM(i, 1)) Then
If Round(varM(i, 1), 2) = Round(dblSuchwert - 0.02, 2) Then Exit For
End If
Next i
If i <= UBound(varM) Then
Rows(i).Resize(Application.Min(5, UBound(varM) - i + 1), UBound(varM, 2)).Select
End If
Else
MsgBox "Es wurde keine Zahl eingegeben!"
End If
End If
End Sub
Code eingefügt mit: Excel Code JeanieGruß Uwe
Registriert seit: 19.08.2017
Version(en): 2016
Hallo Uwe,
vielen vielen Dank, dass du mir hilfst!
Jetzt funktioniert das Makro für die erste Spalte, aber es läuft leider nicht durch.
Mein Ziel ist es dieses Intervall um den Zeitpunkt ZW, der in der Zeile 4 jeweils steht zu zentrieren.
Heißt ich bräuchte am Ende "zugeschnittene Intervalle", die alle die alle die gleiche Länge haben [ZW-0.20; ZW+0,20]
Dann müssten wenn das Makro durchgelaufen ist in der Zeile 25 alle Koordinaten zum Zeitpunkt ZW stehen und drumherum das Intervall aus den anderen Koordinaten
Alle Werte drüber raus sind egal, die können abgeschnitten werden
Ich glaub das hab ich nämlich nicht so genau geschrieben
Falls ich das Makro zum druchlaufen bekomme macht das das oder wird mir der Wert dann erstmal nur markiert :)
Grüße
Nini
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Nini,
was hat deine Frage mit deiner geposteten Datei zu tun? Ich kann Dir nicht folgen.
Gruß Uwe