myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Excel: Text per Formel ersetzen (https://mygully.com/showthread.php?t=3100266)

reddevil88 18.11.13 18:00

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 und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]


Liebe Grüße

eitch100 19.11.13 10:37

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 und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Edit: Hatte nicht bedacht, dass A2 und weitere leer sein könnten. Daher diese Formel in B3 und runterkopieren...:T
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...:D
Ö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)

reddevil88 23.11.13 23:00

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!

eitch100 24.11.13 09:22

Zitat:

Zitat von reddevil88 (Beitrag 25065506)
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...

reddevil88 26.11.13 21:43

Zitat:

Zitat von eitch100 (Beitrag 25066291)
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!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.