Thema Datum  Von Nutzer Rating
Antwort
08.02.2008 08:15:09 kleister
NotSolved
08.02.2008 17:35:45 Holger
NotSolved
11.02.2008 09:38:30 kleister
NotSolved
11.02.2008 11:00:39 Holger
NotSolved
11.02.2008 12:03:49 kleister
NotSolved
11.02.2008 12:10:14 kleister
NotSolved
11.02.2008 13:02:44 Holger
NotSolved
11.02.2008 13:54:46 kleister
NotSolved
Rot Aw:Aw:Aw:Aw:Aw:Aw:Aw:Aw:Text auslesen und in Zelle
11.02.2008 14:13:11 kleister
NotSolved
11.02.2008 15:03:26 Holger
NotSolved
12.02.2008 06:49:42 kleister
NotSolved
12.02.2008 09:50:14 Holger
NotSolved

Ansicht des Beitrags:
Von:
kleister
Datum:
11.02.2008 14:13:11
Views:
1038
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Aw:Aw:Aw:Aw:Aw:Aw:Text auslesen und in Zelle
Hallo Holger,

Ja, das mit Herr / Frau in der Anrede hat geklappt. Aber wenn es "Herr Dr. und Frau" heisst, macht es immer noch ein Sehr geehrte Frau Dr. Nachname draus.. und nicht einen Herr (was immer der Fall ist, wenn Frau und Herr in der Spalte vorkommen). weisst du dafür noch eine Lösung?

Noch etwas, für ein zweites Dokument soll es, wenn Prof. und Dr. zur Verfügung stehen nur den Professor übernehmen, da muss ich einfach diese Zeile

a = InStr(Cells(j, 24), "Dr. "): b = 3

so anpassen a = InStr(Cells(j, 24), "Dr. "): b = "" ?

Danke!

Gruss kleister

Nur, das mit dem Frau

Holger schrieb am 11.02.2008 13:02:44:

Hallo kleister,
das sollte auch deinen neuen Anforderungen erfüllen. Beachte die Bemerkung zur Reihenfolge.

Sub Anrede()
Dim j As Double, lz As Double, a As Integer, b As Integer, c As String, d As Integer
lz = Range("A65336").End(xlUp).Row
For j = 1 To lz
If InStr(Cells(j, 1), "Herr ") Then c = "" Else c = "in"
If InStr(Cells(j, 2).Value, "Dr.") > 0 Then
a = InStr(Cells(j, 1), "Herr ")
If a = 0 Then a = InStr(Cells(j, 1), "Frau ")
If a > 0 Then
Cells(j, 1) = Left(Cells(j, 1), a + 4) + "Dr. " + Mid(Cells(j, 1), a + 5)
End If
End If
If InStr(Cells(j, 2).Value, "Prof") > 0 Then
a = InStr(Cells(j, 1), "Dr. "): b = 3 'oder b=-1, wenn Reihenfolge Professor Dr.
If a = 0 Then a = InStr(Cells(j, 1), "Herr "): b = 4
If a = 0 Then a = InStr(Cells(j, 1), "Frau "): b = 4
If a > 0 Then
Cells(j, 1) = Left(Cells(j, 1), a + b) + "Professor" + c + " " + Mid(Cells(j, 1), a + b + 1)
End If
End If
Next j
End Sub

Holger


kleister schrieb am 11.02.2008 12:10:14:

noch ne kleine Anmerkung. im moment überschreibt es mir "herr" oder "frau" in der anrede. kann der titel (dr. professor) auch hinter dem "herr" oder "frau" eingefügt werden?

vielen dank schon im voraus!
kleister

kleister schrieb am 11.02.2008 12:03:49:

Salut Holger

Danke für deine schnelle Antwort und für die Auskommentierung!
Hab noch ein kleines Problem, bzw. ein etwas Grösserees. Bei der Kontrolle habe ich bemerkt, dass es in manchen Spalten Herr Dr. + Frau heisst, was folglich nach dem Makro einen weiblichen Dr. Müller ergibt.. Da muss ich doch noch ne If InStr(Cells(j, 1).Value, "Herr" & "Frau" Abfrage machen? oder funktioniert das nicht so einfach?

Gruss kleister


Holger schrieb am 11.02.2008 11:00:39:

Hallo kleister,
mein Makro ist bestimmt für die Spalten A und B, und zwar stehen in Spalte A die bisheriegen Anreden und in Spalte B die Titel, falls es die gibt. So habe ich deine Angaben zu Spalte 1 und Spalte 2 interpretiert. Wenn du die Werte in anderen Spalten hast, musst du das Makro in allen Befehlen Cells(Zeile, Spalte)umschreiben. Zeile und Spalte zählen jeweils ab 1, also hat die Zelle B4 die Zeile 4 und die Spalte 2, wird demnach mit Cells(4,2) angesprochen. Falls du deine daten ganz anders organisiert hast, musst du schon genau sagen, wie.
Ich kommentiere das Makro unten.
Viel Erfolg
Holger



kleister schrieb am 11.02.2008 09:38:30:

Tach Holger!

Danke für deine Antwort. Das Makro wird zwar fehlerfrei ausgeführt, aber meine Tabelle sieht anschliessend genau gleich aus. Habe den Debugger eingeschalten. Alle Variablen haben immer den Wert 0 und es werden mir nur die Zeilen Z32,S1 (Z33, 39, 40, 48) angezeigt, alle genannten Zeilen enthalten aber weder ein Prof. / Dr. oder Professor.

Ich versuche jetzt mal deinen Code zu verstehen :) und einen Fehler zu finden. Wenn du aber noch eine Idee hast?

Gruss kleister

Holger schrieb am 08.02.2008 17:35:45:

Hallo kleister,
versuche es einmal so:

Sub Anrede()
Dim j As Double, lz As Double, a As Integer, b As Integer, c As String, d As Integer
lz = Range("A65336").End(xlUp).Row 'BESTIMMT DIE LETZTE ZEILE
For j = 1 To lz 'SCHLEIFE FÜR ALLE ZEILEN MIT DATEN
c = "": If InStr(Cells(j, 1), "Frau ") Then c = "in" 'MÄNNLICHE ODER WEIBLICHE ENDUNG IN c
If InStr(Cells(j, 2).Value, "Dr.") > 0 Then 'WENN IN SPALTE B IN ZEILE J u.a. "Dr." STEHT
a = InStr(Cells(j, 1), "Herr ") 'AN WELCHER STELLE STEHT DANN IN ZELLE Aj "HERR"?
If a = 0 Then a = InStr(Cells(j, 1), "Frau ") 'AN KEINER (a=0), AN WELCHER DANN FRAU?
If a > 0 Then 'DANN STEHT IN Aj "HERR" ODER "FRAU"
Cells(j, 1) = Left(Cells(j, 1), a - 1) + "Dr. " + Mid(Cells(j, 1), a + 5) 'EINFÜGEN "Dr." ZWISCHEN GEEHRTE/R UND NAME UND LÖSCHEN "HERR" ODER "FRAU"
End If
End If
If InStr(Cells(j, 2).Value, "Prof") > 0 Then 'WENN IN SPALTE B IN ZEILE J u.a. "PROF" STEHT
b = -1: d = 5 'WERTE, UM DIE STELLE ZUM EINFÜGEN UND LÖSCHEN FÜR DIE VERSCHIEDENEN FÄLLE FESTZULEGEN
a = InStr(Cells(j, 1), "Herr ")
If a = 0 Then a = InStr(Cells(j, 1), "Frau ")
If a = 0 Then a = InStr(Cells(j, 1), "Dr. "): b = 3: d = 4 'WENN BEREITS "Dr." EINGEFÜGT WURDE; MUSS "PROFESSOR" HINTER "Dr." EINGEFÜGT WERDEN
If a > 0 Then
Cells(j, 1) = Left(Cells(j, 1), a + b) + "Professor" + c + " " + Mid(Cells(j, 1), a + d) 'EINFÜGEN VON "PROFESSOR" ODER "PROFESSORIN"
End If
End If
Next j
End Sub

Viel Erfolg
Holger


kleister schrieb am 08.02.2008 08:15:09:

Hallo zusammen!

Ich habe ein Problem mit einem VBA-Makro und hoffe jemand kann mir da weiterhelfen. Kleine Anmerkung im voraus, ich arbeite mit Office03.

Als Grundlage habe ich eine Excel-Tabelle mit mehreren Spalten. Nun soll es aus einer Spalte herauslesen, ob dort ein Dr. Prof. oder Professor eingetragen ist. Wenn ja, dann soll in eine andere Spalte zwischen Geehrter Herr und dem Nachnamen entweder Dr. oder Professor (für Prof. und Professor) eingetragen werden. Hoffe das ist verständlich, ansonsten hier ein Beispiel:

Spalte 1 (vor Makro) Spalte2
Geehrter Herr Huber Dr. Prof. dent.

Spalte 1 (nach Makro)
Geehrter Dr. Professor Huber

Habe einen Code geschrieben, welcher aber noch nicht ganz funktioniert:

Sub anrede()

Dim i As Double
Dim H As String
Dim F As String

H = "Herr"
F = "Frau"

i = 2

Do Until EndofDocument = True
Columns("i:i").Select
If Cells("Z:i").Value = "Dr." Then
Cells("X:i").Select
Select Case Cells("X:i").Value
Case "Herr"
Selection.InsertAfter(Herr) = " Dr. "
Case "Frau"
Selection.InsertAfter(Frau) = " Dr. "
End Select
End If
i = i + 1
Loop

End Sub

Kann mir vielleicht jemand einen Tip geben?
Danke!

Gruss
kleister

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
08.02.2008 08:15:09 kleister
NotSolved
08.02.2008 17:35:45 Holger
NotSolved
11.02.2008 09:38:30 kleister
NotSolved
11.02.2008 11:00:39 Holger
NotSolved
11.02.2008 12:03:49 kleister
NotSolved
11.02.2008 12:10:14 kleister
NotSolved
11.02.2008 13:02:44 Holger
NotSolved
11.02.2008 13:54:46 kleister
NotSolved
Rot Aw:Aw:Aw:Aw:Aw:Aw:Aw:Aw:Text auslesen und in Zelle
11.02.2008 14:13:11 kleister
NotSolved
11.02.2008 15:03:26 Holger
NotSolved
12.02.2008 06:49:42 kleister
NotSolved
12.02.2008 09:50:14 Holger
NotSolved