Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
832to836
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
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Find-Methode gibt zweiten Wert

Find-Methode gibt zweiten Wert
02.01.2007 15:21:03
Thomas
Hallo Experten,
ich möchte mit der Find-Methode Werte finden und weiterverarbeiten.
Beispiel:
A1..A10 sind alle leer, bis auf:
A1 enthält "Anna"
A2 enthält "Berta"
A10 enthält "Cäsar"
Nun sollen A1..A10 durchforstet werden und -falls sie nicht leer sind- in der gefundenen Reihenfolge nach Spalte C kopiert werden.
Ich dachte mir das so:

Sub Finden()
Dim c
Dim z
With Range("A1:A10")
Set c = .Find("*")
If Not c Is Nothing Then
firstaddress = c.Address
z = 1
Do
Cells(z, 3) = c
Set c = .FindNext(c)
z = z + 1
Loop While c.Address <> firstaddress
End If
End With
End Sub

Das Problem ist, dass der erste gefundene Wert nicht Anna, sondern Berta ist und Anna als letztes gefunden wird.
Das Ergebnis ist also:
C1 = Berta
C2 = Cäsar
C3 = Anna
Ich hätte aber folgendes erwartet:
C1 = Anna
C2 = Berta
C3 = Cäsar.
Weiß jemand Rat, wie ich Excel dazu bringen kann, Zelle A1 als erstes zu durchsuchen, wie auch im Range-Objekt angegeben?

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

Betreff
Datum
Anwender
Anzeige
AW: Find-Methode gibt zweiten Wert
02.01.2007 15:46:20
Josef
Hallo Thomas!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Finden()
    Dim c As Range
    Dim z As Long
    Dim firstaddress As String
    
    With Range("A1:A10")
        
        Set c = .Find("*", after:=Range("A10"))
        
        If Not c Is Nothing Then
            firstaddress = c.Address
            z = 1
            Do
                Cells(z, 3) = c
                Set c = .FindNext(c)
                z = z + 1
            Loop While Not c Is Nothing And c.Address <> firstaddress
        End If
        
    End With
    
    Set c = Nothing
    
End Sub

'Alternative
Sub Finden2()
    On Error Resume Next
    Range("A1:A10").SpecialCells(xlCellTypeConstants, 23).Copy Range("C1")
    On Error GoTo 0
End Sub

Gruß Sepp
Anzeige
AW: Find-Methode gibt zweiten Wert
02.01.2007 16:10:04
Thomas
Hallo Sepp,
vielen Dank für deine Antwort. Die "After"-Anweisung funktioniert gut!
Trotzdem komisch, warum Excel nicht in der ersten Zelle des angegebenen Range-Befehls anfängt, zu suchen...
Deine zweite Lösung sieht auch gut aus, obwohl ich nicht weiß, was die 23 bedeutet. Für mich ist aber die erste Methode besser, da ich in Wirklichkeit keine leeren Zellen habe, sondern Zellen suche, die einen bestimmten Inhalt haben.
Oder geht das damit auch? Nehmen wir also an, ich möchte nur die Zellen kopieren, die "Berta" enthalten. Kann ich das damit auch erledigen?
Vielen Dank und schönen Tag noch,
Thomas
Anzeige
AW: Find-Methode gibt zweiten Wert
02.01.2007 19:38:08
Josef
Hallo Thomas!
Nein, das geht mit ".SpecialCells" nicht.
Ich würde es so machen.
Sub Finden()
    Dim rng As Range, rngC As Range
    Dim strFirst As String
    
    With Range("A1:A10")
        
        Set rng = .Find("*", after:=Range("A10"))
        
        If Not rng Is Nothing Then
            
            strFirst = rng.Address
            
            Do
                
                If rngC Is Nothing Then
                    Set rngC = rng
                Else
                    Set rngC = Union(rngC, rng)
                End If
                
                Set rng = .FindNext(rng)
                
            Loop While Not rng Is Nothing And rng.Address <> strFirst
            
        End If
        
    End With
    
    If Not rngC Is Nothing Then rngC.Copy Range("C1")
    
    Set rng = Nothing
    Set rngC = Nothing
    
End Sub

Gruß Sepp
Anzeige
AW: Find-Methode gibt zweiten Wert
04.01.2007 11:15:08
Thomas
Vielen Dank, sieht auch gut aus. Muss mal ausprobieren, welche Methode die schnellere ist.
Gruß,
Thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige