Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1020to1024
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Abkürzungen aus Zelle in Langtexte umwandeln

Abkürzungen aus Zelle in Langtexte umwandeln
07.11.2008 13:52:07
Ingo
Hallo,
ich möchte euch um Hilfe bitte. Ich habe Abkürzungen in einer Zelle (Spalte A) drin. In einer anderen Zelle (Spalte B) möchte ich gerne die ausgeschriebenen Wörter in korrekter Reihenfolge darstellen lassen:
Userbild
In dem zweiten Bereich habe ich eine Zuordnung von Abkürzungen zu ausgeschriebenen Texten.
Wie kann ich bitte, vielleicht auch ohne Makros, die Ergebnisse in B4, B5 usw erstellen lassen?
Viele Grüße
Ingo

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abkürzungen aus Zelle in Langtexte umwandeln
07.11.2008 14:28:56
ptonka
Hallo Ingo,
eine Wahnsinnsformel, aber es klappt so einigermaßen:
Stelle u.a. Formel in Zelle B4:
=VERKETTEN(WENN(ISTFEHLER(SVERWEIS(TEIL($A$4;FINDEN(A8;$A$4;1);LÄNGE(A8));$A$8:$B$13;2;0))=WAHR;""; SVERWEIS(TEIL($A$4;FINDEN(A8;$A$4;1);LÄNGE(A8));$A$8:$B$13;2;0));" "; WENN(ISTFEHLER(SVERWEIS(TEIL($A$4;FINDEN(A12;$A$4;1);LÄNGE(A12));$A$8:$B$13;2;0))=WAHR;""; SVERWEIS(TEIL($A$4;FINDEN(A12;$A$4;1);LÄNGE(A12));$A$8:$B$13;2;0));" "; WENN(ISTFEHLER(SVERWEIS(TEIL($A$4;FINDEN(A10;$A$4;1);LÄNGE(A10));$A$8:$B$13;2;0))=WAHR;""; SVERWEIS(TEIL($A$4;FINDEN(A10;$A$4;1);LÄNGE(A10));$A$8:$B$13;2;0));" "; WENN(ISTFEHLER(SVERWEIS(TEIL($A$4;FINDEN(A11;$A$4;1);LÄNGE(A11));$A$8:$B$13;2;0))=WAHR;""; SVERWEIS(TEIL($A$4;FINDEN(A11;$A$4;1);LÄNGE(A11));$A$8:$B$13;2;0));" "; WENN(ISTFEHLER(SVERWEIS(TEIL($A$4;FINDEN(A13;$A$4;1);LÄNGE(A13));$A$8:$B$13;2;0))=WAHR;""; SVERWEIS(TEIL($A$4;FINDEN(A13;$A$4;1);LÄNGE(A13));$A$8:$B$13;2;0));" "; WENN(ISTFEHLER(SVERWEIS(TEIL($A$4;FINDEN(A9;$A$4;1);LÄNGE(A9));$A$8:$B$13;2;0))=WAHR;""; SVERWEIS(TEIL($A$4;FINDEN(A9;$A$4;1);LÄNGE(A9));$A$8:$B$13;2;0)))
Was hier mit $A$4 bezeichnet ist, musst Du, wenn Du die Zelle in B5 kopierst auf $A$5 ändern.
Gruß,
Ptonka
Anzeige
AW: Abkürzungen aus Zelle in Langtexte umwandeln
07.11.2008 15:00:56
Ingo
Hallo ptonka,
vielen Dank für die Lösung. Was ich nicht geschrieben hatte: es sind deutlich mehr Abkürzungen als in diesem Beispiel. Bei 30 Abkürzungen wird die Formel sehr lang.
Gibt es eine Verkürzungmöglichkeit?
Viele Grüße
Ingo
AW: Abkürzungen aus Zelle in Langtexte umwandeln
07.11.2008 15:18:00
ptonka
Hallo Ingo,
da wirst Du wohl um ein Makro nicht herumkommen.#
Gruß,
Ptonka
Makro gesucht
07.11.2008 15:32:03
Ingo
Hallo Ptonka,
ja, dann hoffe ich auf eine Makrohilfe.
Danke Ingo
AW: noch etwas 'augefeilter'
08.11.2008 14:36:23
Peter
Hallo Ingo,
so sollte das Makro mit allen vorkommenden Positionen fertig werden.
https://www.herber.de/bbs/user/56632.xls
Gruß Peter
Anzeige
AW: noch etwas 'augefeilter'
10.11.2008 17:20:00
Ingo
Hallo Peter,
das ist spitze. Hab ganz herzlichen Dank für die Hilfe!
Beste Grüße
Ingo
AW: noch etwas 'augefeilter'
11.11.2008 11:02:00
Ingo
Moin Peter,
leider kann ich das Makro nicht komplett auf meine Datei anpassen. Kannst du bitte nochmal helfen?
- Meine Tabellennamen sind DATA und ZIEL, konnte ich ändern.
- Die Reihenfolge der Abkürzungen beginnt erst in Zeile 4, ging ebenfalls.
- Die Langtexte sollen in ZIEL in Spalte N ab Zeile 13 geschrieben werden.
- Die Abkürzungen stehen in ZIEL ab O13:O
- In DATA sind die drei Spalten gleich angelegt. Die Überschrift ist in Zeile 3 (=Abkürz., Langtext, Pos.), die Inhalte ab Zeile 4
> Ich bekomme die Fehlermeldung "Index außerhalb des gültigen Bereichs."
> Was bedeutet bitte "rows.count?
Hier nun meine Anpassung:
Option Explicit
'
' Ich habe Abkürzungen in einer Zelle in Spalte A.
' In einer anderen Zelle (Spalte B) möchte ich gerne die ausgeschriebenen Wörter
' in korrekter Reihenfolge darstellen lassen:
'
' In dem zweiten Bereich habe ich eine Reihenfolge der Abkürzungen zu ausgeschriebenen
' Texten.
'

Public Sub Klartext()
Dim WkSh_Q   As Worksheet ' das Quell-Tabellenblatt - mit den Kürzeln und dem Langtext
Dim WkSh_Z   As Worksheet ' das  Ziel-Tabellenblatt - mit den Eingaben und den Ausgaben
Dim aTemp    As Variant   ' ein temporerer Array für die Eingaben
Dim iIndx    As Integer   ' der For/Next Index zum temporären Array
Dim lZeile   As Long      ' For/Next Zeilen-Index zum Eingaben-Tabellenblatt
Dim aLngTxt  As Variant   ' ein Arbeits-Array für die Langtext-Ausgabe
Dim iLngMax  As Integer   ' die maximale Position der Langtexte
Dim rZelle   As Range     ' die Zelle mit den gesuchten Kürzeln zum vorgegebenen Kürzel
Application.ScreenUpdating = False ' kein Bildschirm-Update - kein flackern
Set WkSh_Q = ThisWorkbook.Worksheets("Data") ' den Blattnamen für Quelle anpassen
Set WkSh_Z = ThisWorkbook.Worksheets("Ziel") ' den Blattnamen für Ziel anpassen
iLngMax = Application.WorksheetFunction.Max(WkSh_Q.Range("C4:C" & _
WkSh_Q.Cells(Rows.Count, 3).End(xlUp).Row))   ' die maximale Zuordnung/Reihenfolge
WkSh_Z.Range("N13:N" & WkSh_Z.Cells(Rows.Count, 14).End(xlUp).Row).ClearContents ' 14 statt  _
2
With WkSh_Z
For lZeile = 13 To .Cells(Rows.Count, 1).End(xlUp).Row ' rows.count 15 statt 1 ?
aTemp = Split(.Cells(lZeile, 15).Value, " ") ' die Eingaben am Space trennen;  _
Startzelle Zeile=lZeile; Spalte=15=N
ReDim aLngTxt(iLngMax) ' den Arbeits-Array für die Langtexte redimensionieren
For iIndx = LBound(aTemp) To UBound(aTemp)  ' den temporären Array abarbeiten
With WkSh_Q.Range("A4:A" & WkSh_Q.Cells(Rows.Count, 1).End(xlUp).Row)
Set rZelle = .Find(aTemp(iIndx), LookAt:=xlWhole, LookIn:=xlValues)
If Not rZelle Is Nothing Then         ' das Kürzel wurde gefunden
If aLngTxt(CInt(WkSh_Q.Cells(rZelle.Row, 3).Value) - 1) = "" Then
aLngTxt(CInt(WkSh_Q.Cells(rZelle.Row, 3).Value) - 1) = _
WkSh_Q.Cells(rZelle.Row, 2).Value
Else
aLngTxt(CInt(WkSh_Q.Cells(rZelle.Row, 3).Value) - 1) = _
aLngTxt(CInt(WkSh_Q.Cells(rZelle.Row, 3).Value) - 1) & " " & _
WkSh_Q.Cells(rZelle.Row, 2).Value
End If
Else
MsgBox "Das Kürzel  """ & aTemp(iIndx) & """  wurde nicht gefunden.", _
48, "   Hinweis für " & Application.UserName
End If
End With
Next iIndx
For iIndx = LBound(aLngTxt) To UBound(aLngTxt)
If WkSh_Z.Cells(lZeile, 14).Value = "" Then ' 14 statt 2, da N=14?
If aLngTxt(iIndx)  "" Then WkSh_Z.Cells(lZeile, 14).Value = aLngTxt(iIndx)  '  _
14 statt 2
Else
If aLngTxt(iIndx)  "" Then WkSh_Z.Cells(lZeile, 14).Value = _
WkSh_Z.Cells(lZeile, 14).Value & " " & aLngTxt(iIndx)  ' 14 statt 2
End If
Next iIndx
Next lZeile
End With
Application.ScreenUpdating = False
End Sub


Viele Grüße
Ingo

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge