myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Excel: Text per Formel ersetzen

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 18.11.13, 18:00   #1
reddevil88
Anfänger
 
Benutzerbild von reddevil88
 
Registriert seit: May 2009
Beiträge: 33
Bedankt: 12
reddevil88 gewöhnt sich langsam dran | 80 Respekt Punkte
Standard Excel: Text per Formel ersetzen

Guten Abend,

ich möchte mir gerne die Suche nach mehreren Ersatzteilen in einem Warenwirtschaftssystem erleichtern.
Im Feld A1 sollen alle Ersatzteilnummern aus den Zeilen A2:A** mit einem "OR" verknüpft werden, sodass ich das Ergebnis einfach in die Suche kopieren/einfügen kann.

Das ganze habe ich bisher so gelöst:
PHP-Code:
=VERKETTEN(A2;" OR ";A3;" OR ";A4;" OR ";A6;" OR ";A7;" OR ";A8;" OR ";A9;" OR ";A10;" OR ";A11;" OR ";A12;" OR ";A13;" OR ";A14;" OR ";A15;" OR ";A16;" OR ";A17;" OR ";A18;" OR ";A19;" OR ";A20;" OR ";A21;" OR ";A22;" OR ";A23;" OR ";A24;" OR ";A25;" OR ";A26;" OR ";A27;" OR ";A28;" OR ";A29;" OR ";A30;" OR ";A31;" OR ";A32;" OR ";A33;" OR ";A34;" OR ";A35;" OR ";A36;" OR ";A37;" OR ";A38;" OR ";A39;" OR ";A40;" OR ";A41;" OR ";A42;" OR ";A43;" OR ";A44;" OR ";A45;" OR ";A46;" OR ";A47;" OR ";A48;" OR ";A49;" OR ";A50
Problem:
Wenn ich nur die Zeilen A2:A10 belegt habe, stehen am Ende noch ganz viele "OR OR OR".
Diese möchte ich gerne komplett per Funktion entfernen lassen.

Darüber hinaus würde mich auch freuen, wenn das ganze kompatibel mit Excel 2003 wäre - jedoch lassen sich da nur 30 Argumente pro Funktion einfügen, sodass man ggf. wieder mehrere Funktionen schreiben müsste, die später zusammengefügt werden.
Das wäre aber vorerst zweitrangig.

Würde mich freuen, wenn mir jemand weiterhelfen kann.

Download-Link zur Excel-Datei:
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


Liebe Grüße
reddevil88 ist offline   Mit Zitat antworten
Ungelesen 19.11.13, 10:37   #2
eitch100
Agnostiker
 
Benutzerbild von eitch100
 
Registriert seit: Dec 2009
Beiträge: 4.433
Bedankt: 4.849
eitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkte
Standard

Also ich habe das jetzt erstmal mit nem kleinen Trick (Hilfsspalte) gelöst. Das geht mit Sicherheit auch eleganter, aber vielleicht reicht es so... wenn nicht, melde dich einfach nochmal...

Spalte B ist ausgeblendet und es sind nur die ersten 30 Zeilen berücksichtigt... bei Bedarf kannst du die Formel in Spalte B weiter runterkopieren und dann in A1 auf die dann letzte Zeile verweisen...

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Edit: Hatte nicht bedacht, dass A2 und weitere leer sein könnten. Daher diese Formel in B3 und runterkopieren...
Code:
=WENN(UND(A3="";B2="");"";WENN(UND(A3="";B2<>"");B2;WENN(UND(A3<>"";B2="");A3;B2&" OR "&A3)))
Edit2: Das ließ mir jetzt keine Ruhe... hier die etwas hübschere Variante...
Öffne den VBA Editor... füge ein Modul ein und kopiere diesen Code hinein...
Code:
Function MeineSuche(ByRef Bereich As Range, Trennung As String) As String
Dim rng As Range
   For Each rng In Bereich
      If rng <> "" Then
      MeineSuche = MeineSuche & rng & Trennung
      End If
   Next
If Len(MeineSuche) > 0 Then MeineSuche = Left(MeineSuche, Len(MeineSuche) - Len(Trennung))
End Function
Jetzt noch in A1 diese Formel...
Code:
=MeineSuche(A2:A50;" OR ")
__________________________________________________ __
Wenn das OR als Trennung fix ist, reicht es auch so...
Code:
Function MeineSuche(ByRef Bereich As Range) As String
Dim rng As Range
   For Each rng In Bereich
      If rng <> "" Then
      MeineSuche = MeineSuche & rng & " OR "
      End If
   Next
If Len(MeineSuche) > 0 Then MeineSuche = Left(MeineSuche, Len(MeineSuche) - 4)
End Function
Dann diese Formel in A1...
Code:
=MeineSuche(A2:A50)
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
eitch100 ist offline   Mit Zitat antworten
Ungelesen 23.11.13, 23:00   #3
reddevil88
Anfänger
 
Benutzerbild von reddevil88
 
Registriert seit: May 2009
Beiträge: 33
Bedankt: 12
reddevil88 gewöhnt sich langsam dran | 80 Respekt Punkte
Standard

Danke für die schnelle Antwort!

Ich werds mir mal anschauen! Freut mich schonmal, dass mir jemand weiterhelfen kann

Edit:

Die beiden Makros funktioniert bei mir leider nicht.
Habs in den VBA-Editor eingefügt und die Datei als ".xlsm" gespeichert.
Der Rückgabewert in meiner Zelle ist jedoch immer "#NAME?" .
Prinzipiell aber nicht weiter schlimm, da das andere schon super funktioniert.

Nochmals vielen Dank für deine Mühe!
reddevil88 ist offline   Mit Zitat antworten
Ungelesen 24.11.13, 09:22   #4
eitch100
Agnostiker
 
Benutzerbild von eitch100
 
Registriert seit: Dec 2009
Beiträge: 4.433
Bedankt: 4.849
eitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1148138781 Respekt Punkte
Standard

Zitat:
Zitat von reddevil88 Beitrag anzeigen
Die beiden Makros funktioniert bei mir leider nicht.
Habs in den VBA-Editor eingefügt und die Datei als ".xlsm" gespeichert.
Hast du im VBA-Editor auch erst ein Modul eingefügt (Menü "Einfügen" --- Modul), wo der Code dann hinein muss?

Edit: Könnte es sein, dass deine Makro-Einstellungen auf "Alle Makros ohne Benachrichtigung deaktivieren" steht?
Excel-Optionen --- Vertrauensstellungscenter --- Einstellungen für das Vertrauensstellungscenter... --- Einstellungen für Makros
Dort stellst du dann auf wenigstens "Alle Makros mit Benachrichtigung deaktivieren", speicherst die Datei ab und öffnest sie wieder. Dann bekommst du unter dem Menü eine Sicherheitswarnung und kannst für diese Datei die Makros aktivieren... Bei mir steht es auf "Alle Makros aktivieren", aber das muss jeder selbst entscheiden...
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
eitch100 ist offline   Mit Zitat antworten
Ungelesen 26.11.13, 21:43   #5
reddevil88
Anfänger
 
Benutzerbild von reddevil88
 
Registriert seit: May 2009
Beiträge: 33
Bedankt: 12
reddevil88 gewöhnt sich langsam dran | 80 Respekt Punkte
Standard

Zitat:
Zitat von eitch100 Beitrag anzeigen
Hast du im VBA-Editor auch erst ein Modul eingefügt (Menü "Einfügen" --- Modul), wo der Code dann hinein muss?
Damits hats jetzt geklappt!
Hab beim ersten Mal vielleicht was falsch gemacht

Sieht jetzt sehr komfortabel aus das ganze!

Herzliches Dankeschön!
reddevil88 ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.


Sitemap

().