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

.Find - Problem

.Find - Problem
07.11.2007 10:48:00
Klaus
Hallo,
ich habe ein Problem mit der Find-Funktion.
Zum Verständnis: Es dreht sich um eine Anwendung, in der auf Rohdaten einer Datenbankanwendung zurückgegriffen wird, die als Exceldatei geliefert wird. Dabei geht es um die Beschreibung von Waldflächen. In der ersten Tabelle stehen Informationen zur Waldaufteilung (in Wirtschaftseinheiten = Abteilungen). Hier stehen die grundlegenden Informationen wie Geologie, Klima usw. In der zweiten Tabelle stehen die Informationen zu den Baumarten, die auf der Fläche stehen. Der gleiche Schlüssel in beiden Tabellen ist als "Abt-Schlüssel" bezeichnet. In der ersten Tabelle gibt es den Abt-Schl nur einmal, in der Zweiten nicht oder mehrmals.
Bei meiner Auswertung wird die Tabelle1 zur Grundlage. Ich lese den Abt-Schlüssel aus und suche in Tabelle2 im Abt-Schl ob er vorhanden ist. Es handelt sich um eine abgewandelte Funktionsbeschreibung aus dem Archiv. Sie funktioniert so wie ich es jetzt beurteilen kann gut bis auf die Ausnahme, dass beim 1. Durchlauf als Adresse der 2. Datensatz angegeben wird. z.B ABT-Schl "5000001a" ist in Tabelle2 5 x vorhanden (sortiert nach Abt-Schl). 1. Adresse wäre "A3" angezeigt wir aber Adresse "A4". In meiner Beispieldatei ist auch dass richtig, da nur 1 Wert 1 x ausgelesen werden soll, der in allen DS existiert und gleich ist.
Es handelt sich um diese Zeilen
Set c = .Find(t_abt, LookIn:=xlValues)
If Not c Is Nothing Then
firstadress = c.Address
~f~
In der Folge wird jeweils der richtige DS gefunden.
gesamter Codeabschnitt
~f~
For Each x In wo_abtschl
t_abt = wo_Abt_list(i, 1)
wo_flae = Application.VLookup(t_abt, wo_Abt_list, 2, False)
' baz_abtschl.Activate
' baz_abt = Application.VLookup(t_abt, baz_abtschl, 1, False)
'
With baz_abtschl
Set c = .Find(t_abt, LookIn:=xlValues)
If Not c Is Nothing Then
firstadress = c.Address
Do
If c.Address = firstadress Then
' Blössenfläche aus BAZ einfügen (Nur 1 x)
bloesFlae = c.Offset(0, baz_bloeFlae_sp - 1).Value
wo_Abt_list(i, 4) = bloesFlae
End If
baz_flae = baz_flae + c.Offset(0, wo_fla_sp - 1).Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstadress
End If
End With
wo_Abt_list(i, 3) = baz_flae
wo_Abt_list(i, 5) = baz_flae + bloesFlae
If (baz_flae + bloeFlae) > 0 Then
flaeFaktor = wo_flae / (baz_flae + bloesFlae)
End If
wo_Abt_list(i, 7) = flaeFaktor
baz_flae = 0
flaeFaktor = 0
bloesFlae = 0
i = i + 1
Next
Kann mir vielleicht jemand weiterhelfen.
MfG. Klaus

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .Find - Problem
07.11.2007 11:14:00
Tino
Hallo,
habe ich deine frage richtig verstanden, müsste deine Suche ab A1 beginnen.
ungetestet:
Set c = .Find(t_abt, LookIn:=xlValues, After:=Range("A1"))
Gruss
Tino

AW: .Find - Problem
07.11.2007 11:46:00
Klaus
Hallo Tino,
abtSchl = ein per Funktion erstellter Schlüssel je Zeile, der sich als Bereichsname mit unterschiedlicher Adressenzuordnung bei jeder Tabelle verändert.
baZ_abtschl = dieser Schlüsselbereich in der Tabelle Baumartenzeilen
Beginn ist jeweils "A3" und Ende ist dynamisch - wird, da er sich nicht mehr verändert und mehrfach gebraucht wird, vorher Public deklariert.
Mit After:=Range("A3") kommt auch "A4" als Ergebnis. Da der Schlüsselbereich markiert ist, kommt bei "A2" eine Fehlermeldung.
MfG. Klaus

Anzeige
AW: .Find - Problem
07.11.2007 11:49:00
Tino
Hallo,
bei After:=Range("A3") sucht er ab A3, also die nächste ist bei dir A4 du musst deinen Code umstellen damit du ab A1 oder A2 mit der suche beginnen kannst.
Gruss
Tino

AW: .Find - Problem
07.11.2007 15:06:00
Klaus
Hallo Tino,
danke für Deinen Tipp, dann muss ich es so umsetzen.
MfG. Klaus

@Tino: After heißt nach, nicht ab! Gruß owT
08.11.2007 03:49:00
Luc:-?
:-?

AW: @Tino: After heißt nach, nicht ab! Gruß owT
08.11.2007 10:16:00
Tino
Hallo,
bei suchfunktion gibt es die Zelle an ab der gesucht werden soll.
Bsp:
Columns("E:E").Find(What:="Hallo", After:=Range("E1"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
oder
Columns("E:E").Find(What:="Hallo", After:=Range("E500"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Gruss
Tino

Anzeige
In der Hilfe steht aber auch NACH! Gruß owT
09.11.2007 02:28:00
Luc:-?
:-?

AW: In der Hilfe steht aber auch NACH! Gruß owT
09.11.2007 08:40:00
Tino
Hallo Luc,
probiere es doch einfach aus.
Gruß
Tino

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige