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

Range.Find findet keine formatierten Zahlen

Range.Find findet keine formatierten Zahlen
16.11.2019 10:36:54
Stefan
Hallo,
die Range.Find - Methode findet einen aus einer Zelle (Value) ausgelesenen Wert in einem Zellbereich nur,
wenn dieser Zellbereich die Standard-Formatierung hat. Die Find-Methode wird mit SearchFormat:=false aufgerufen. Ich suche nach einer Möglichkeit eine Zahl unabhängig vom Ausgabeformat ohne eine zellenweise Loop-Schleife zu finden.
Kann da jemand einen Tip geben ? Bei Suche Datumsformat mit Find hab ich gelesen, dass das nur über LookAt:=xlFormulas funzt. Die Möglichkeit habe ich nicht, da die Zahlen teils mittels Formel errechnet werden.
Grüße

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 10:47:25
Hajo_Zi
frage jemand der neben Dir sitzt der sieht die Datei.
Die meisten hier sehen Sie nicht.
Da Sie nicht auf Deinen Rechner schauen.
Vielleicht sollte die Datei verlinkt werden?
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)
Das ist nur meine Meinung zu dem Thema.
Ich vermute Value ist Text.

AW: Range.Find findet keine formatierten Zahlen
16.11.2019 10:56:38
Stefan
Hallo,
Upload nicht möglich, da riesiges VBA-Projekt.
Ich hoffte, die Frage recht eindeutig gestellt zu haben, ohne dass man sich durch Code wurschteln muss.
Anbei die aufgerufene Funktion:
Private Function FindContent(r As Range, v) As Range
Dim p As Range, k As Range, f As Range
Set f = Nothing
Set p = r.Find(What:=v, LookIn:=xlValues, LookAt:=xlWhole, SearchFormat:=False)
If Not p Is Nothing Then
Set f = p
Set k = p
Do
Set k = r.FindNext(After:=k)
Set f = Union(f, k)
Loop Until k.Address = p.Address
End If
Set findcontet = f
End Function
aufgerufen wird die Funktion mit:
...
LookFor = Selection.Cells(1, 1) ' LookFor ist Variant
...
Set r = FindContent(Intersect(List.DataBodyRange, r.EntireColumn), LookFor)
' Suchbereich ist anwendungsspezifisch
Grüße
Anzeige
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 10:58:44
Hajo_Zi
gut ich schaue nicht auf fremde Rechner um meine Vermutung zu bestätigen. Ich bin dann raus.
Gruß Hajo
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 11:15:57
Stefan
ähm ?
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 11:22:20
Nepumuk
Hallo Stefan,
kannst du nur die Tabelle in der du suchst hochlanden? Zudem brauche ich den genauen Suchbegriff.
Gruß
Nepumuk
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 17:43:39
Stefan
Hallo Nepumuk,
habe das mal als Beispiel in eine kleine Mappe gepackt.
Es wird die gleiche Suchfunktion für einen Bereich mit formatierten Zahlen und Standard (General) benutzt mit unterschiedlichen Ergebnissen. Ich kann auch nicht über eine Textsuche gehen, da Zahlen verschieden formatiert sein könnten.
https://www.herber.de/bbs/user/133256.xlsm
Gruß
Anzeige
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 18:32:20
Nepumuk
Hallo Stefan,
teste mal so:
G
4$B$4

ZelleFormel
G4=suche(B3:B26;F3)

Und dieser Funktion:
Public Function Suche(ByRef probjRange As Range, ByVal pvvntSearchTerm As Variant) As String
    Dim avntValues As Variant
    Dim ialngIndex As Long
    avntValues = probjRange.Value2
    For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
        If avntValues(ialngIndex, 1) = pvvntSearchTerm Then
            Suche = probjRange.Cells(ialngIndex, 1).Address
            Exit For
        End If
    Next
End Function

das dürfte sogar etwas schneller sein als die Find-Methode da diese nicht zu den schnellsten zählt.
Gruß
Nepumuk
Anzeige
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 19:23:02
Stefan
Danke Nepumuk,
das klappt.
Hätte mir nicht vorstellen können, dass eine VBA-Schleife schneller sein soll als eine Standardroutine.
Abschließende Frage zu deinem Vorschlag:
Der "Umweg" über ein Array ist aus Geschwindigkeitsgründen gewählt ?
Sonst wäre ja auch ein
For Each r in probjRange.Cells
... und Vergleich r.Value mit dem zu suchenden Inhalt denkbar.
LG Stefan
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 19:42:20
Nepumuk
Hallo Stefan,
die Zellen einzeln abzuklappern ist die langsamste Methode. Du musst dir nur im Objektkatalog die Range-Klassen ansehen. Die hat jede Menge Eigenschaften und die müssen ja alle in den Arbeitsspeicher geladen werden auch wenn du nur eine einzige benötigst. In meinem Code wird nur zweimal aus das Range-Objekt zugegriffen. Einmal um die Value2-Eigenschaft zu lesen (das sind die unformatierten Zellwerte) und einmal um die Adresse zurückzugeben. Darum ist das schnell, denn die Array-Funktionen sind in Millisekunden durch. Selbst wenn du eine Liste mit einer Million Einträgen abarbeitest ist es immer noch schneller als die Find-Methode.
Gruß
Nepumuk
Anzeige
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 20:25:04
Stefan
hab vielen Dank, wieder was gelernt :-)
AW: Range.Find findet keine formatierten Zahlen
17.11.2019 07:37:23
Luschi
Hallo Stefan,
oder so:

Public Function Find_1(r As Range, LookFor) As Variant
Dim p As Range, v As Variant
v = Application.Match(LookFor, r, 0)
If IsError(v) Then
Find_1 = "/"
Else
Find_1 = r.Cells(v).Address
End If
End Function
Gruß von Luschi
aus klein-Paris
AW: Range.Find findet keine formatierten Zahlen
16.11.2019 10:50:34
Stefan
Ergänzung:
Suche ich mit Zellbereich.Find( .. LookIn:=xlFormulas ..), findet er die Zahlen, die im Blatt mit Tausenderpunkt und ohne Nachkommastellen formatiert sind. Allerding natürlich nur die direkt eingegebenen Zahlen. Sobald eine Zahl aus einer Formel berechnet wird, findet die Methode diese natürlich nicht in Zelle.Formula. Also bin ich auf LookIn:=xlValues angewiesen, bisher ohne Erfolg.
Der zu suchende Zahlenwert kommt aus Zelle.Value (ohne Formatierung).
Anzeige

271 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige