Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
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

Werte finden und Bereich kopieren

Werte finden und Bereich kopieren
13.05.2015 14:44:25
Robin
Hallo miteinander,
ich habe folgendes Problem mit extrem großen Excel-Datein mit ca. 140000 Zeilen und mehreren Spalten.
Unten findet ihr dazu eine Beispieldatei, die den grundlegenden Aufbau widerspiegelt.
Meistens sind die Zahlen in Spalte A zwischen 7-10, gesucht werden die Zahlen größer 11, die habe ich auch mal markiert.
In Spalte B steht die Uhrzeit, 111104,71 ist dann 11:11.0471 Uhr.
C sind Messwerte.
Soweit zum Aufbau.
Wie ihr sehen könnt, sind die Zahlen größer 11 in Spalte A immer in einem "Paket", sie stehen also nie alleine. Wichtig wäre da immer der erste Wert aus diesem Paket.
Ich würde jetzt gerne von diesem Punkt aus eine positive und negative Zeit definieren, in der der gesuchte Bereich festgelegt wird.
Für die Beispieldatei nehmen wir mal einfach +-0.01 s an.
Jetzt soll dieser Bereich, also über alle Spalten, kopiert werden und am besten in einem neuen Tabellenblatt eingefügt werden.
Vielen Dank im Voraus
Wenn irgendwas unklar ist, bitte einfach nachfragen.
https://www.herber.de/bbs/user/97625.xlsx

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
  • So?
    13.05.2015 18:06:50
    Michael
  • 18.05.2015 08:47:34
    Robin
  • 18.05.2015 09:05:34
    Robin
  • 18.05.2015 14:45:36
    Michael
Anzeige
So?
13.05.2015 18:06:50
Michael
Hallo Robin,
wenn ich Dich richtig verstanden habe, geht es so:

Option Explicit
Sub kopieren()
Dim von As Long, bis As Long, i As Long, k As Long
Dim z As Range
Dim im_Bereich As Boolean
von = 1
bis = Range("a" & von).End(xlDown).Row
' bis = 21 zum ersten Test
k = 1
im_Bereich = False
For Each z In Range("A" & von & ":A" & bis)
If z.Value > 10 Then
If Not im_Bereich Then
Range("a" & z.Row - 1 & ":C" & z.Row + 1).Copy Sheets(2).Range("A" & k)
k = k + 3
im_Bereich = True
End If
Else: im_Bereich = False
End If
Next
End Sub
Das im Code zu Sheet(1) bzw. Tabelle1.
Achtung, ich habe >10 und nicht >11, aber 11 kommt nicht vor.
Schöne Grüße,
Michael

Anzeige
AW: So?
18.05.2015 08:47:34
Robin
Hallo Michael,
erstmal vielen Dank für deine Hilfe und sorry für die späte Antwort.
Prinzipiell funktioniert das ganze schon mal, das mit den >11 habe ich nur als Sicherheit reingeschrieben, es hätte auch >20 sein können oder sonstiges.
Ich hatte mir jedoch vorgestellt, dass sich diese Zeit +-0,01s, bzw. entspricht ja einer Spalte, sich auf ein "Paket" bezieht, also eine Spalte nach oben ab dem ersten Wert dieses Paketes und eine nach unten ab dem letzten Wert. Falls das zu umständlich zu realisieren ist, könnte man für den ersten Wert des Paketes auch einfach 0,07s draufrechnen.
9 111104,87 0,09
73 111104,88 0
73 111104,89 -0,06
73 111104,9 0,03
73 111104,91 0
73 111104,92 0,21
73 111104,93 0
73 111104,94 -0,15
10 111104,95 -0,09
Das entspräche bei dem Code doch der Zeile:
Range("A" & z.Row - 1 & ":J" & z.Row + 7).Copy Sheets(2).Range("A" & k)
, oder?
Wenn ich das aber so mache, bekomme ich nur die vollständigen Werte mit dem letzten "Paket" und der Rest bleibt so. Aber ich benötige ja alle "Pakete" und alle dazugehörigen Werte.

Anzeige
AW: So?
18.05.2015 09:05:34
Robin
Ich habe das ganze noch mal alles mit de k-Wert ein wenig angepasst und nun funktionierts!
Prima, Vielen Dank!

AW: So?
18.05.2015 14:45:36
Michael
Hallo Robin,
freut mich.
(bin immer erst nachmittags aktiv)
Gute Zeit,
Michael

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige