Ich habe eine Excel-Tabelle mit einer Spalte „AP“, in der jede Zelle Werte wie diese enthält
5358 161043 22344 8444 103145 69221044
„5358 161043 22344 8444 103145 69221044“ sind alle eine Zelle, in diesem Fall AP2. Ich weiß, das ist ein Durcheinander, aber ich habe es von jemand anderem geerbt und versuche, es zu bereinigen.
Ich brauche eine Möglichkeit, diese Werte im Zahlenbereich zwischen 6623 und 12756 zu extrahieren. Dazu käme mir entweder ein Suchen-und-Ersetzen-Befehl aus, der alle Werte außerhalb dieses Bereichs löscht, oder eine Funktion, die die betreffenden Werte in eine andere Spalte kopiert.
Antwort1
Ich habe einige Dummy-Daten erstellt und sie in Spalte A auf meinem Blatt eingetragen. In Spalte B habe ich die folgende Formel verwendet:
=IF(AND(A1>=$L$35,A1<=$L$36),"Yes","No")
Dies ist ein einfacher Filter, der für Werte in Ihrem Zielbereich „Ja“ zurückgibt (ich habe sie in die Zellen L35 und L36 eingefügt).
Wählen Sie als Nächstes diese beiden Spalten aus und aktivieren Sie den Filter.
Gehen Sie nun auf der Registerkarte „Start“ zur Multifunktionsleiste „Bearbeiten“ und wählen Sie „Suchen und Auswählen“. Wählen Sie die Option „Gehe zu Spezial…“
Wählen Sie die Option „Nur sichtbare Zellen“ und drücken Sie „OK“.
Drücken Sie Kopieren oder verwenden Sie STRG+C. Dadurch sollten nur die Zeilen mit den gewünschten Daten ausgewählt werden.
Wenn Sie jetzt ein leeres Blatt einfügen, fügen Sie nur die Daten ein, die Ihrem gewünschten Datumsbereich entsprechen. Hinweis: In meinem Beispiel habe ich Zeile 1 für Überschriften nicht leer gelassen, sodass beim Anwenden meines Filters ein „Nein“ übrig blieb. Sie können den Nachzügler entweder löschen oder einfach am Anfang eine leere Zeile lassen, damit das nicht passiert.
Antwort2
Geben Sie zunächst die folgende benutzerdefinierte Funktion in ein Standardmodul ein:
Public Function GrabData(r As Range) As String
Dim cel As Range, v As String, a, d As Double
GrabData = ""
For Each cel In r
v = cel.Text
arr = Split(v, " ")
For Each a In arr
If IsNumeric(a) Then
d = CDbl(a)
If d > 6622 And d < 12757 Then GrabData = GrabData & " " & a
End If
Next a
Next cel
End Function
Wenn Sie dann Daten inAP1durchAP3, wählen Sie eine andere Zelle aus und geben Sie ein:
=GrabData(AP1:AP3)
Zum Beispiel:
Wie Sie sehen, werden die Werte in einerdurch Leerzeichen getrenntZeichenfolge, genau wie die Eingaben.