darf ich mich hier mit einer Nebenfrage einmischen?
habe eine Function namens "Palette(Code)" geschrieben, die, unter Berücksichtigung der verbundenen Zellen, die Paletten mit gegebenen Code zurückgeben.
Code:
Option Explicit
Function Palette(Code As String) As String Dim FundZelle As Range, FundAdr1 As String With Tabelle1.Range("A1:B13") Set FundZelle = .Find(Code, LookIn:=xlValues, lookat:=xlWhole) If Not FundZelle Is Nothing Then FundAdr1 = FundZelle.Address Do Palette = Palette & FundZelle.Offset(, -1).MergeArea(1) & ", " Set FundZelle = .FindNext(FundZelle) Loop While FundZelle.Address <> FundAdr1 Palette = Left(Palette, Len(Palette) - 2) End If End With End Function
Sub Testsuche() Dim a As String a = Palette("aaa") Debug.Print a End Sub
Palette("aaa") ergibt "1, 4" bei Aufruf vom Sub "Testsuche", aber bei Verwendung in einer Zelle kommt "#WERT".
(30.06.2020, 20:04)Raoul21 schrieb: Warum? Was muss man da ändern?
Hallo, :19:
"FindNext" zickt in UDFs ordentlich rum - rufe statt der Zeile mit ".FindNext..." einfach nochmal ".Find..." auf - mit "After:=..." der letzten gefundenen Zelle: :21:
Code:
Set FundZelle = .Find(What:=Code, LookIn:=xlValues, LookAt:=xlWhole, After:=FundZelle)
also erst einmal ein riesengroßes Dankeschön für all die hilfreichen Antworten!
@shift-del: Ich habe deine Formel für meine Tabelle angewandt und es funktioniert SUPER! Genau das, was ich haben wollte. Dankeschön! Jetzt bin ich so sehr davon begeistert, dass ich noch einen Schritt weiter gehen wollte und es leider nicht ganz so geklappt hat, wie ich es mir vorgestellt hab. Wenn man in der Tabelle noch eine Spalte "Container" hätte, welche jeder Palette einen von mehreren Containern zuordnet, aber wiedereinmal ein Container zu mehreren Paletten zugeordnet werden kann... wie würde die Formel dazu aussehen?
Die Datei hängt wiedermal dabei mit meinem Fehlversuch. :(
@alle, die PowerQuery angesprochen haben: auch an euch danke. Da ich hier nichts auf den Arbeitsrechner runterladen will bzw. darf ohne vorher die Bestätigung von oben eingeholt zu haben, werde ich damit erstmal warten, aber auf jeden Fall mal ansprechen. Ich hab mich dazu ein wenig belesen und es klingt auf jeden Fall sehr nützlich und vor allem hilfreich.
Tach! Ich weiß wirklich nicht, warum PQ-"Lösungen" verstärkt mit der Aura des Geheimnisvollen angepriesen werden! Entweder ich gebe eine komplette Lösung oder ich lasse es!
Stell Dir vor, jemand bittet um eine Lösung und ich schreibe: "Mit VBA total easy!" Als "Lösung" biete ich dann einen Screenshot nach Durchlauf des Makros an …
Kopfschüttelnd, Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Tach, das ist nicht geheimnisvoll, sondern voll einfach. Und hier so sinnvoll wie Formellösungen mit der XL 365 er Insider Version... ich möchte Interesse wecken... .... für den TE eher nicht. Wer widererwarten eine Frage dazu hat, kann sie gerne stellen, aber bitte nicht frotzeln...
P.S. dieses Thema ist sooft hier behandelt worden... Aber du kannst weiter was auch immer schütteln...
... sich wundernd...
Gruß Jörg stolzes Mitglied im ----Excel-Verein Freund einer excellenten Power Query-Abfrage
danke. Seltsame Regel. Keinen Hinweis darauf zu finden, ausser man sucht direkt danach. Sehr heimtückisch.
Hallo Albina
nun konnte ich meine Funktion mit Cases Hilfe fertigstellen. Füge folgenden Code in ein Modul in Deine erste Beispieltabelle ein und verwende die Funktion wie folgt:
Schreibe in eine Zelle Deiner Wahl: =Palette("aaa") oder als Bezug zB =Palette(B15) liefert das gewünschte Ergebnis.
Für die Formel sind verbundene Palettenzellen, wie sie in Deinem Beispiel auch vorkommen, kein Problem.
OK, und hier der Code für die Funktion namens "Palette":
Code:
Function Palette(Code As String) As String Dim FundZelle As Range, FundAdr1 As String With Tabelle1.Range("A1:B13") Set FundZelle = .Find(Code, LookIn:=xlValues, lookat:=xlWhole) If Not FundZelle Is Nothing Then FundAdr1 = FundZelle.Address Do Palette = Palette & FundZelle.Offset(, -1).MergeArea(1) & ", " Set FundZelle = .Find(Code, after:=FundZelle) Loop While FundZelle.Address <> FundAdr1 Palette = Left(Palette, Len(Palette) - 2) End If End With End Function
Das ist nur eine zusätzliche Möglichkeit. Denn erstens ist die Aufganbenstellung inzwischen etwas erweitert worden, und zweitens wurde eine unschlagbar einfach anzuwendende Formellösung präsentiert.
falls Du mit meinem Makro für eine Tabellenfunktion, das ich in zuvor geposteten Beitrag #18 präsentiert habe, etwas anfangen kannst, dann kann ich vielleicht auch Deine in #15 gewünschte Container-Funktion in einer Erweiterung berücksichtigen.
Nun ist etwas viel Zeit seit meiner letzten Meldung vergangen und das tut mir schrecklich Leid. Da war leider zu viel los die letzten Wochen.
Aber zurück zum Thema: So ungefähr wie Jockel es gemacht hat, hätte ich es gern, nur ohne, dass sich die Containernummern wiederholen. Das war auch das Problem bei mir. Da in der originalen Datei sowohl die Codes als auch die Containernummern öfter als nur 2-3 mal auftauchen, sieht es schon ziemlich seltsam aus, wenn ein- und dieselbe Containernummer 10 mal in einer Zelle vorkommt. Aber das geht schonmal in die richtige Richtung. Ich hoffe, ihr habt noch einen Vorschlag für mich? @Raoul21 Ich würde deine Lösung morgen sofort mal ausprobieren und mich dann wieder melden.