Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

kleine & sicherlich leicht lösbare XL Funktionen

Forumthread: 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 :)

Anzeige

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.

Anzeige
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.

;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige