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

kleine & sicherlich leicht lösbare XL Funktionen

kleine & sicherlich leicht lösbare XL Funktionen
30.05.2002 14:15:50
sunny8 (beginner)
Hallo ich muss mittels eines Schleifendurchlaufs eine bestimmte Zelle in Spalte A finden.
Der Inhalt der Zelle variiert ständig. Er beginnt jedoch immer mit dem selben Wortlaut.
Mit nachfolgend genannter Schleife ist es mir leider nicht möglich gewesen diese Zelle zu finden, da Sie anscheinend nach dem exakten Wortlaut "Kennung=" sucht?!
Der Inhalt der Zelle ändert sich jedoch nicht wahllos, sondern ist fest definiert. Er lautet wie folgt "Kennung=eD II/1999 und" oder "Kennung=aD IV/1996 und"
Somit kann man festgelegen, dass erst "Kennung=" dann die ID (kleiner+großer Buchstabe), dann ein Leerzeichen, dann "Quartal/Jahr" und dann ein Leerzeichen gefolgt von einem und dargestellt wird.

Do Until ActiveCell.Value = "" And ActiveCell.Offset(1, 0).Value = ""
If ActiveCell.Value <> "Kennung=" Then
ActiveCell.Offset(1, 0).Select
Else
Exit Do
End If
Loop

Wenn ich dann die ID (kleiner+großer Buchstabe) in einer Variable zur weiteren Verarbeitung ablegen möchte, hatte ich immer folgenden Code dazu benutzt. Doch dieser schneidet nun nicht alles vom "=" bis zum 1. Leerzeichen sondern alles bis zum 2. Leerzeichen ab. Ich gelingt mir einfach nicht, dies abzuändern. Mitels "MsgBox UrStatus" bemerkte ich, dass erst diese Variable erst nur die ID enthält, doch beim weiteren Schleifendurchlauf dann auch noch alles bis zum nächsten Leerzeichen hinzukommt (also das Leerzeichen und "Quartal/Jahr").

Laenge = Len(ActiveCell.Value) 'Länge des Zeileninhalts
For x1 = 1 To Laenge 'Durchlaufen des kompletten Zelleninhalts
If Mid((ActiveCell.Value), x1, 1) = "/" Then 'x1
For x2 = x1 + 1 To Laenge 'Durchlaufen des kompletten Zelleninhalts ab dem x1
If Mid((ActiveCell.Value), x2, 1) = " " Then 'x2
UrJahr = Mid((ActiveCell.Value), x1 + 1, x2 - x1 - 1) 'liefert Text zwischen x1 und x2
End If
Next x2
End If
Next x1

Wer kann mir bei den beiden Dingen weiterhelfen?!
Es sind zwar nur kleine Veränderungen an den Schleifen nötig, doch ich stelle mich "noch" zu anfängerhaft an.

Vielen Dank im Voraus für die Mühe und das mitgebrachte Verständnis!!!

Sunny :)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: kleine & sicherlich leicht lösbare XL Funktionen
30.05.2002 14:53:22
Michael Scheffler
Hallo,

zu 1: Versuchs mal mit "Like", wenn Du mit "=" abtestest, muss die Zeichenkette GENAU SO sein, "Like" kann auch mit "*" kombiniert werden.

zu 2: Versuchs mal mit "InStr". Das liefert Dir das erste Auftreten eines Zeichens in der Zeichenkette.

Gruß

Micha

An Micha: Wie soll denn der Code dafür aussehen?
31.05.2002 10:37:44
Sunny8
Hallo Micha.

Ich kann nicht genau nachvollziehen wie und wo ich den InSt Befehl einbauen soll und das mit dem Like soll ich einfach in meine bestehende Formel integrieren?

Gruss
Sunny8.

Re: An Micha: Wie soll denn der Code dafür aussehen?
31.05.2002 11:16:12
WernerB.
Hallo ???,

teste doch mal folgendes:

Zu 1.:
ersetze die Zeile:
If ActiveCell.Value <> "Kennung=" Then

durch die Zeile:
If Left(ActiveCell.Value, 8) <> "Kennung=" Then


Zu 2.:
Ersetze die ganze Schleife durch diese drei Codezeilen (in 'Urjahr' sollte dann die ID enthalten sein):
x1 = InStr(ActiveCell.Value, "=")
x2 = InStr(ActiveCell.Value, " ")
Urjahr = Mid(ActiveCell.Value, x1 + 1, Len(ActiveCell.Value) - x2)


Gestatte mir abschließend bitte noch einen Hinweis:
In diesem Forum bitte mit Realnamen auftreten (Vorname genügt); lies dazu bitte auch die "FAQ" in der Kopfleiste dieses Forums.
Vielen Dank für Dein Verständnis!

Viel Erfolg wünscht
WernerB.

Anzeige
Bitte um Korrektur des Lösungsvorschlags
03.06.2002 10:55:01
Marcel
Hallo Werner.
Vielen Dank für deine Mühe.
Ich scheint aber ein kleiner Fehler in dein Script eingeschlichen zu haben.
Ich habe meine ehemalige und deine neue Funktion mal im Folgenden inkl. des MsgBox-Outputs aufgelistet.
Sicherlich springt dir der Fehler gleich ins Auge aber mir gelang dies leider bsiher noch nicht.
Mein Problem ist nur, dass ich das funktionsfähige Script eigentlich heute schon benötigt hätte und nur noch sehr schwer Zeitaufschub bekomme. :(

Vielen Dank im Voraus für deine Mühe.
Marcel

ActiveSheet.Range("A9").Select
Laenge = Len(ActiveCell.Value)

'--------- Anfang --- deine Version --------------------------------------------------
x1 = InStr(ActiveCell.Value, "=")
x2 = InStr(ActiveCell.Value, "")
UrStatusNeu = Mid(ActiveCell.Value, x1 + 1, Len(ActiveCell.Value) - x2)

MsgBox "UrStatusNeu: " & UrStatusNeu, vbCritical
'Ursprung: "Kennziffer=mD I/2002 und"
'Ergebnis: "mD I/2002 und"
'--------- Ende --- deine Version ----------------------------------------------------

'--------- Anfang --- meine Version --------------------------------------------------
For x1 = 1 To Laenge
If Mid((ActiveCell.Value), x1, 1) = "=" Then
For x2 = x1 + 1 To Laenge
If Mid((ActiveCell.Value), x2, 1) = " " Then
UrStatus = Mid((ActiveCell.Value), x1 + 1, x2 - x1 - 1)
End If
Next x2
End If
Next x1

MsgBox "UrStatus: " & UrStatus, vbCritical
'Ursprung: "Kennziffer=mD I/2002 und"
'Ergebnis: "mD I/2002"
'--------- Ende --- meine Version ----------------------------------------------------

Anzeige
Re: Bitte um Korrektur des Lösungsvorschlags
03.06.2002 19:13:07
WernerB.
Hallo Marcel,

so sollte es klappen:

Viel Erfolg wünscht
WernerB.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige