Microsoft Excel

Herbers Excel/VBA-Archiv

VBA If Then Else Problem

Betrifft: VBA If Then Else Problem von: Rehhirsch
Geschrieben am: 15.09.2004 11:15:07

Hallo, ich nochmal. Also folgendes Problem : Angenommen ich habe in der Spalte C in der 1. Zelle "Mario Henze" zu stehen und in der 2. Zelle "Mario Himbeer Henze". Nun teile ich diese mittels Script in mehrere Zellen auf, so daa der 1. Name nun 2 weitere Zellen belegt, nämlich D und E, und der 2. Name 3 weitere Zellen, nämlich D und E und F. Nun möchte ich dass das Script mittels If ... Then ... Else ... Formel erkennt ob in einer Zelle von Spalte F etwas steht und wenn ja, dass er dann den Inhalt in der dazugehörigen Zelle von Spalte C an den Anfang setzt und dann den Inhalt der anderen beiden Zellen dahinter, mit dieser Formel :
ActiveCell.FormulaR1C1 = "=+RC[3] &"" "" &RC[1] &"" "" &RC[2]"
Wenn in der Zelle von Spalte F allerdings nichts steht soll er diese Formel anwenden : ActiveCell.FormulaR1C1 = "=+RC[2] &"" "" &RC[1]" .

Er soll praktisch zwischen Namen mit einem Vornamen und namen mit 2 Vornamen unterscheiden und die jeweilige Formel anwenden. Kann mir jemand sagen wie ich das machen kann??? Ich weiß dass dies eine sehr komplizierte Umschreibung ist, aber ich weiß nich wie ich es noch genauer bescheiben soll, da mir in anderen Foren irgendwie keiner helfen kann...
Wenn noch Fragen sind bitte stellen, ich antworte sofort!

MfG Rehhirsch

  


Betrifft: AW: VBA If Then Else Problem von: Dominic
Geschrieben am: 15.09.2004 11:40:03

Man kann es auch mit der Wenn Formel machen:
ActiveCell.FormulaR1C1 = "=IF(RC[3]="""",RC[2]&"" ""&RC[1],RC[3]&"" ""&RC[1]&"" ""&RC[2])"
Dominic


  


Betrifft: AW: VBA If Then Else Problem von: Rehhirsch
Geschrieben am: 15.09.2004 12:23:21

Alles klar danke, so funktioniert es schon mal recht gut. Wie muss ich aber die Formel :

Selection.FormulaR1C1 = "=IF(RC[3]="""",RC[2]&"" ""&RC[1],RC[3]&"" ""&RC[1]&"" ""&RC[2])"

umschreiben, wenn ich zum beispiel einen Namen mit 4 Bestandteilen habe, wie z.B.:

"Mario u. Christian Krakau"

Daraus soll er "Krakau Mario u. Christian" machen.

MfG Rehhirsch


  


Betrifft: AW: VBA If Then Else Problem von: Dominic
Geschrieben am: 15.09.2004 12:33:05

Gib es eine maximale Begrenzung der Anzahl der Vornamen?


  


Betrifft: AW: VBA If Then Else Problem von: Rehhirsch
Geschrieben am: 15.09.2004 12:36:16

Ja ich glaube mehr als 3 Vornamen hat keiner, also besteht kein Name aus mehr als 4 Teilen.


  


Betrifft: AW: VBA If Then Else Problem von: Dominic
Geschrieben am: 15.09.2004 12:53:33

Wenn du lange If... Then... Else... Formeln vermeiden möchtest, hier eine Lösung die Du beliebig erweitern kannst:

ActiveCell.FormulaR1C1 = "=TRIM(CONCATENATE(RC[4],"" "",RC[1],"" "",RC[2],"" "",RC[3]))"
CONCATENATE = Verketten der Zellinhalte mit einer Leerzeichen, also bei nur eine Vorname werden 2 Leerzeichen hinten stehen.
TRIM = Glättet das Ergebnis: alle unnötigen Leerzeichen löschen, d.h. die 2 letzten im Beispiel.

Dominic


  


Betrifft: AW: VBA If Then Else Problem von: Rehhirsch
Geschrieben am: 15.09.2004 13:34:06

Ja OK, dadurch wäre das Problem mit den 4 Namen gelöst, danke bis dahin, allerdings kann ich dann diese Formel nicht auf alle Fälle anwenden, also nicht auf Namen die nur aus 2 oder 3 Teilen bestehen. Es sieht ja so aus, dass das Script ausgeführt werden soll und der eine Teil Scripts, um den es ja hier geht, dann eine Spalte mit tausenden von Namen durchläuft und diese dann in die richtige Reihenfolge bringen soll. Kannst mir da auch weiterhelfen??? Bitte...

MfG Rehhirsch


  


Betrifft: AW: VBA If Then Else Problem von: Dominic
Geschrieben am: 15.09.2004 14:08:12

Was für eine Sortierung nimmst Du vor: Name, Vorname, Anzahl Vornamen? Was soll denn passieren?
Wenn ich mehr weis kann ich vielleicht weiterhelfen.

Dominic


  


Betrifft: AW: VBA If Then Else Problem von: Rehhirsch
Geschrieben am: 15.09.2004 14:34:58

Naja, zunächsteinmal glaube ich dass ich es jetzt hinbekommen habe und zwar mit dieser superkomplizierten Formel :

Selection.FormulaR1C1 = "=IF(RC[4]="""",(IF(RC[3]="""",RC[2]&"" ""&RC[1],RC[3]&"" ""&RC[1]&"" ""&RC[2])),TRIM(CONCATENATE(RC[4],"" "",RC[1],"" "",RC[2],"" "",RC[3])))"

Also mit dieser Formel scheint er es so richtig zu machen : Er soll erst gucken ob der Name aus 4 Teilen besteht, wenn nicht wendet er deine erste Formel an, wo er den Nachnamen vor den oder die Vornamen setzt.
Wenn der Name allerdings aus 4 Teilen besteht wendet er deine zweite Formel an, wo er den Nachnamen vor den anderen eventuellen Vornamen setzt.
Es scheint soweit jetz alles zu klappen, außer dass er wenn der Name nur aus einem Teil besteht nach der ganzen Prozedur ein Leerzeichen davor macht. Eigentlich sollte dies ja durch das Trim weggehen, aba das funzt wohl noch nicht so richtig...
Ist dieser Weg, also mit der obigen Formel der richtige oder gibt es einen anderen besseren?

Danke für deine Hilfe bis jetz!!!

MfG Rehhirsch


  


Betrifft: AW: VBA If Then Else Problem von: Dominic
Geschrieben am: 15.09.2004 14:55:30

Wenn Du TRIM an den Anfang der Formel setzt, dann sollte es gehen. Jetzt wird TRIM nur dann ausgeführt wenn es 4 Namen findet:
"=TRIM(IF(RC[4]="""",IF(RC[3]="""",RC[2]&"" ""&RC[1],RC[3]&"" ""&RC[1]&"" ""&RC[2]),RC[4]&"" ""&RC[1]&"" ""&RC[2]&"" ""&RC[3]))"


Dominic


  


Betrifft: AW: VBA If Then Else Problem von: Rehhirsch
Geschrieben am: 15.09.2004 15:01:25

Jo alles klar danke!!!


 

Beiträge aus den Excel-Beispielen zum Thema "VBA If Then Else Problem"