Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
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

Verkettungsfunktion

Verkettungsfunktion
08.01.2016 07:35:21
Jens
Hallo,
weis jemand ob es möglich ist die Bezüge für die Verkettungsfunktion über eine separate Logik vorzugeben.
Nicht direkt einen Bezug auf eine Zelle zu schaffen, sondern durch die Zelle auf eine andere Spalte zu verweisen, auf die dann die Verkettungsfunktion wirkt.
https://www.herber.de/bbs/user/102658.xlsx
In Zelle E2 soll die Verkettungsfunktion sein. Ich Zelle A2-C2 die Daten zum verknüpfen.
Die Logik was wie verknüpft werden soll, ist in Tabelle 2. Die Leere Zelle deutet dabei einen Leerschritt an.
Hat hierzu jemand eine Lösung?

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verkettungsfunktion
08.01.2016 07:59:48
hary
Moin Jens
"Die Leere Zelle deutet dabei einen Leerschritt an."
Kann diese auch belegt sein oder mehr Zellen?
Evtl. reicht dir dies als Ansatz.



Tabelle1
 ABCDE
2Halloist da Hallo ist da

verwendete Formeln
Zelle Formel Bereich R1C1 für Add In
E2=WENNFEHLER(INDEX(A2:C2;1;CODE(Tabelle2!B4)-64)&" ";"")&WENNFEHLER(INDEX(A2:C2;1;CODE(Tabelle2!D4)-64)&" ";"")&WENNFEHLER(INDEX(A2:C2;1;CODE(Tabelle2!F4)-64)&" ";"")  =IFERROR(INDEX(RC[-4]:RC[-2],1,CODE(Tabelle2!R[2]C[-3])-64)&" ","")&IFERROR(INDEX(RC[-4]:RC[-2],1,CODE(Tabelle2!R[2]C[-1])-64)&" ","")&IFERROR(INDEX(RC[-4]:RC[-2],1,CODE(Tabelle2!R[2]C[1])-64)&" ","")

http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://hajo-excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 14.02 einschl 64 Bit

Ansonsten mit einer UDF.
gruss hary

Anzeige
AW: Verkettungsfunktion
08.01.2016 08:01:46
lupo1
E2: =GLÄTTEN(INDIREKT(Tabelle2!B4&"2")&" "&INDIREKT(Tabelle2!D4&"2")&" "&INDIREKT(Tabelle2!F4&"2"))

AW: Verkettungsfunktion
08.01.2016 08:14:43
Jens
Hallo,
danke für die Versuche.
Ich bräuchte eine Möglichkeit über eine Logik vorzugeben wie die Zusammenstellung der Werte sein soll.
z.B
AleerBLeerC
oder
ABleerC
Das Sollte extern definiert werden können. (Also auch die Position der Leerschritte)
Der Aufbau könnte auch anders sein, als ich es mir gedacht hätte.

AW: Versuch
08.01.2016 10:09:14
hary
Moin
Hier mal mein bescheidener Versuch mit UDF.



Tabelle2
 ABCDEF
4zeile 1B CA 

http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://hajo-excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 14.02 einschl 64 Bit




Tabelle1
 ABCDE
2Halloist da ist daHallo

verwendete Formeln
Zelle Formel Bereich R1C1 für Add In
E2=Kette2(Tabelle2!B4:F4;A2:C2)  =Kette2(Tabelle2!R[2]C[-3]:R[2]C[1],RC[-4]:RC[-2])

http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://hajo-excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 14.02 einschl 64 Bit

Code:
Function Kette2(Vorgabe As Range, Ketten As Range)
Dim Wert
Dim arr
Dim dic
Dim i As Long
Set dic = CreateObject("Scripting.Dictionary")
arr = Vorgabe.Value
For Each Wert In arr
dic(i) = Wert
If Not IsNumeric(dic(i)) Then
Kette2 = Kette2 & Ketten.Cells(Asc(dic(i)) - 64)
Else
Kette2 = Kette2 & " "
End If
i = i + 1
Next
End Function

Profis mal bitte rueberschauen, geht bestimmt schoener.
gruss hary

Anzeige
AW: geht einfacher
08.01.2016 10:28:18
hary
Moin
Code:
Function Kette2(Vorgabe As Range, Ketten As Range)
Dim Wert
Dim arr
arr = Vorgabe.Value
For Each Wert In arr
If Not IsNumeric(Wert) Then
Kette2 = Kette2 & Ketten.Cells(Asc(Wert) - 64)
Else
Kette2 = Kette2 & " "
End If
Next
End Function

gruss hary

AW: geht einfacher
08.01.2016 10:31:29
Jens
@hary
Super funktioniert super.
Kann man es noch erweitern, sodass z.b auch nur ein Text in eine Zelle der Logik (Tabelle2) eingegeben werden kann und dieser wird in E2 auch übernommen?
Für was ist die Zahl 64 in deinem Code?
Gruß hary

Anzeige
AW: geht einfacher
08.01.2016 11:06:53
hary
Moin
"auch nur ein Text in eine Zelle der Logik (Tabelle2) eingegeben werden kann und dieser wird in E2 auch übernommen?"
Wie meinst du das bzw wie soll es aussehen?



Tabelle2
 ABCDEF
4zeile 1AhalloB C

http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://hajo-excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 14.02 einschl 64 Bit

Der Ascwert von Bsp.-weise "A" ist 65 da ich die 1 brauche ziehe ich 64 ab.
Lass dir mal(in einer neuen Tabelle) durch diesen Code anzeigen
Sub Codezahl()
Dim i As Long
For i = 1 To 125
Cells(i, 1) = Asc(Chr(i))
Cells(i, 2) = Chr(i)
Next
End Sub

gruss hary

Anzeige
AW: geht einfacher
08.01.2016 11:11:16
Jens
Ich beziehe dies auf die Logik.
Hier werden ja die Spalten eingegeben.
Ebenso wenn nichts drin steht, dann ein Leerschritt.
Ist es irgendwie möglich, auch Sonderzeichen noch entsprechen der Leeren Zellen vorzugeben.
Ich Möchte z.b
Zelle A Zelle B verknüpfen.
Aber so.
Wert A Leerschritt / Leerschritt Wert B
In der Logik wird das so eingetragen
A Leer / Leer B
Weist du was ich meine?

AW: geht einfacher
08.01.2016 11:31:50
Jens
Ich verstehe nicht was ich mit dem Code anfangen soll.
Sub Codezahl()
Dim i As Long
For i = 1 To 125
Cells(i, 1) = Asc(Chr(i))
Cells(i, 2) = Chr(i)
Next
End Sub
Wie hilft mir das in Bezug auf die Logik?

Anzeige
AW: geht einfacher
08.01.2016 12:20:13
Jens
Hallo,
hätte selber rumprobiert.
Funktioniert aber nicht.
Kannst du mir helfen?
Ich dachte da dran die Spaltenbuchstaben einfach in Werte um zuwandeln.
Function Kette2(Vorgabe As Range, Ketten As Range)
Dim Wert
Dim arr
Dim SpalteQ As Byte
arr = Vorgabe.Value
For Each Wert In arr
SpalteQ = Columns(Wert).Column
If IsNumeric(SpalteQ) = False Then
Kette2 = Kette2 & Ketten.Cells(SpalteQ)
Else
Kette2 = Kette2 & Wert
End If
Next
End Function

AW: geht einfacher
08.01.2016 21:06:42
Daniel
Hi
das Problem ist, dass dir diese Zeile mit einem Fehler abbricht, wenn "Wert" nicht einem Spaltenbuchstaben oder einer Zahl entspricht, oder wenn du eine Spaltennummer > 255 ansprichst (wg Byte)
SpalteQ = Columns(Wert).Column

wenn du das ausführst, müsstest du vorher prüfen, ob Wert überhaupt einer Zahl oder einem Spaltenbuchstaben entspricht, oder du müsstest das ganze in On Error Resume Next kapseln und prüfen, ob ein Fehler entstanden ist.
auch die nächste Zeile ist Unfug.
If IsNumeric(SpalteQ) = False Then

IsNumeric(SpalteQ) wird immer wahr sein, weil du SpalteQ als Zahlvariable deklariert hast.
ich hab zwar noch nicht verstanden was du machen willst (das solltest du vielleicht nochmal genauer mit Beispieldatei erklären) aber wenn, dann wäre dein Code so vielleicht sinnvoll:

Function Kette2(Vorgabe As Range, Ketten As Range)
Dim Wert
Dim arr
Dim SpalteQ As Byte
arr = Vorgabe.Value
On Error Resume Next
For Each Wert In arr
Err = 0
SpalteQ = Columns(Wert).Column
If Err = 0 Then
' hier dier Code, wenn Wert einem Spaltenbuchstaben entspricht
' kein Fehler
Kette2 = Kette2 & Ketten.Cells(SpalteQ)
Else
' hier der Code, wenn Wert kein Spaltenbuchstabe ist
' Fehler
Kette2 = Kette2 & Wert
End If
Next
On Error Goto 0
End Function
wenn im Status On Error Resume Next (bei einem Fehler weitermachen) ein Fehler passiert, enthält die Variable Err die Fehlernummer. Solange kein Fehler passiert ist, hast sie den Wert 0.
Sie behält den Fehlerwert, bis man wieder den Fehlerabbruch aktiviert (on Error Goto 0) oder sie manuell auf 0 setzt.
Gruss Daniel

Anzeige
AW: geht einfacher
08.01.2016 11:04:30
Jens
Ein Probleme gibt es.
wenn die Spalte in der Logik größer Z ist gibt es Probleme.
z.b AB dann wird immer der Wert von A genommen.
Kann man das lösen?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige