Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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

Formelösung

Formelösung
20.06.2023 22:43:26
Andy Yomi

Liebe Leute,

Ich grüße Euch. Ich suche eine Formelösung für folgendes Problem: Ich habe eine Liste mit zwei Spalten mit ca. 1000 Zeilen. In Spalte A habe ich Inhalte die sich ab und an in der Spalte doppeln. In Spalte B habe ich Inhalte die zu den Inhalten in der gleichen Zeile von Spalte A gehören. Das sieht so aus:

Spalte A Spalte B
Lissabon Linie 1
Hamburg Linie 34
Berlin Linie 12
Hamburg Linie 23

Nun habe ich mir auf dem zweiten Tabellenblatt alle Orte aus Spalte A einmal aufgeführt. Nun möchte ich eine Formel finden, die mir alle Inhalte aus Spalte B hinter den entsprechenden Ort aufführt. Hier müsste also bei Hamburg „Linie 34, Linie 12“ stehen.

Hat hier jemand eine Idee?

Vielen Danke und Grüße
Andy

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formelösung
21.06.2023 02:01:13
Piet
Hallo

für mich ist es am einfachsten diese Aufgabe mit einem Makro zu lösen.
Einfach in ein Modul kopieren und mit einem Standard Command Button starten. (KEIN ActiveX Steuerelement)

mfg Piet

  • Option Explicit
    Dim AC As Range, lz1 As Long

    Sub Städet_Linien_zuweisen()
    Dim rFind As Range, Adr1 As String
    Dim Tb1 As Worksheet, Txt As String
    Set Tb1 = Worksheets("Tabelle1")
    
    With Worksheets("Tabelle2")
         lz1 = .Cells(Rows.Count, 1).End(xlUp).Row
         .Range("B2:B" & lz1).ClearContents
         For Each AC In .Range("A2:A" & lz1)
             Txt = Empty   'Linien Text löschen
             Set rFind = Tb1.Columns(1).Find(What:=AC, After:=[a1], LookIn:=xlFormulas, LookAt:= _
                 xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
             If Not rFind Is Nothing Then
                Adr1 = rFind.Address
                Do
                   Txt = Txt & ", " & rFind.Cells(1, 2)
                   Set rFind = Tb1.Columns(1).FindNext(rFind)
                Loop Until rFind.Address = Adr1
             End If
             AC.Cells(1, 2) = Trim(Mid(Txt, 2))
         Next AC
    End With
    End Sub



  • Anzeige
    AW: Formelösung
    21.06.2023 10:58:18
    Andy Yomi
    Hallo Piet,

    Vielen Dank! Nur leider habe ich gar keine Ahnung von VBA und wie ich einen Command Button erstelle und zuweise.

    Kannst du mir dazu noch ein paar Basisinfos geben?

    Danke und Grüße
    Andy


    AW: Formelösung
    21.06.2023 12:41:04
    Pappawinni
    du kannst mal hier schauen
    https://www.herber.de/forum/messages/1934304.html
    in so ein Modul kannst du den Code rein schreiben, aber vielleicht auch einfach eine Funktion, etwa:
    
    Public Function ayKeyList(key As String, Bereich As Range, wertespalte As Long) As Variant
        Dim i As Long
        Dim sOut As String
        
        Debug.Print key
        
        For i = 1 To Bereich.Rows.Count
           Debug.Print
           If Bereich.Cells(i, 1) = key Then
              sOut = sOut & Bereich.Cells(i, wertespalte) & ";"
           End If
        Next
        If sOut > "" Then
            sOut = Left(sOut, Len(sOut) - 1)
        End If
        ayKeyList = sOut
        
    End Function
    Da bräuchtest du kein Makro aufrufen, sondern einfach die Funktion in der Zelle anwenden....
    also etwa =ayKeyList(D2;$A$2:$B$5;2)
    wenn in D2 die Stadt steht, für die du die Auflistung brauchst und dein Tabelle mit Städten und Linien in A2:B5
    dann bekommst du die Werte in Spalte 2 dieser Tabelle verkettet
    mit =ayKeyList(D2;$A$2:$B$5;1), würdest du halt die Werte aus der ersten Spalte, die als Schlüssel dient so oft verkettet bekommen, wie sie in der Tabelle vorkommt.


    Anzeige
    AW: Formelösung
    21.06.2023 13:53:54
    Pappawinni
    Ach....
    falls du das verwenden solltest, dann wirf die Zeilen mit
    debug.print ...
    raus. Die hatte ich mal pro forma zu Kontrollzwecken rein gesetzt. Die werden aber nicht benötigt.


    AW: Formelösung
    22.06.2023 16:35:34
    Andy Yomi
    Hallo,

    Ich danke Dir und probiere es mal aus!

    Viele Grüße
    Andy


    AW: Formelösung
    21.06.2023 10:55:34
    Andy Yomi
    Hallo Steve,

    Vielen Dank für die Rückmeldung. Aber ich bekomme das leider nicht überein. Welche Formel genau meinst du da?

    Danke und Grüße
    Andy


    AW: Formelösung
    21.06.2023 11:04:47
    SF
    Ich rate mal dass die Daten ab Zeile 2 beginnen.
    =wennfehler(Index(Tabelle1!$B$2:$B$100;Zeile(Tabelle2!$B$2:$B$100)-1/(Tabelle1!$A$2:$A$100=$A2);spalte(A1)));"")
    
    Die Formel nach rechts und nach unten ziehen.


    AW: Formelösung
    22.06.2023 16:34:32
    Andy Yomi
    Hallo Steve,

    Vielen Dank für Deine Hilfe!

    Leider funktioniert es noch nicht. Ich bekomme für die Formel eine Fehlermeldung.

    Ich habe es aber vielleicht auch schlecht erklärt!?

    Ich habe auf Tabellenblatt 1 in Spalte A die Orte und in Spalte B die Linien. Auf Tabellenblatt 2 habe ich dann jeden Ort in Spalte A genau einmal und in Spalte B wollte ich nun die Formel einfügen, die alle Ergebnisse aus Spalte B auf dem Tabellenblatt 1 anzeigt, die mit der Stadt in Spalte A auf Tabellenblatt 1 und 2 gleich sind.

    Viele Grüße
    Andy


    Anzeige
    AW: Formelösung
    23.06.2023 09:48:24
    SF
    Sorry, da hat noch etwas gefehlt:
    =WENNFEHLER(INDEX(Tabelle1!$B$2:$B$100;AGGREGAT(15;6;ZEILE(Tabelle2!$B$2:$B$100)-1/(Tabelle1!$A$2:$A$100=$A2);SPALTE(A1)));"")
    


    AW: Formelösung
    23.06.2023 16:26:58
    Andy Yomi
    vielen Dank Steve!!

    Ich teste das mal.

    Grüße
    Andy

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige