Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Um Zeitpunkt herum zentrieren
#1
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
Antworten Top
#2
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 Jeanie

Gruß Uwe
Antworten Top
#3
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 :)?
Antworten Top
#4
Hallo,

(19.08.2017, 12: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
Antworten Top
#5
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?
Antworten Top
#6
Hallo Nini,

leider kenne ich Dein Tabellenblatt nicht und weiß somit auch nicht, welche Daten wo stehen.
Schau dazu bitte mal hier.

Gruß Uwe
Antworten Top
#7
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 ::)

.csv   Mappe1.csv (Größe: 804 Bytes / Downloads: 3)
Antworten Top
#8
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 Jeanie


Gruß Uwe
Antworten Top
#9
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
Antworten Top
#10
Hallo Nini,

was hat deine Frage mit deiner geposteten Datei zu tun? Ich kann Dir nicht folgen.

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste