Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1396to1400
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

Inhalte aus Spalten in Zelle übertragen

Inhalte aus Spalten in Zelle übertragen
16.12.2014 11:58:27
zeojin
Hallo Leute,
ich bin schon seit geraumer Zeit auf der Suche, habe aber bisher in vorhandenen Threads nichts gefunden was zu meinem Problem passt.
Ich würde gerne in einer Zelle auf einem Blatt einige Inhalte wiedergeben, die in zwei Spalten eingetragen sind. Genauer gesagt sollen nur die Inhalte wieder gegeben werden, bei denen in beiden Spalten ein Inhalt steht.
In Spalte A steht die Stückzahl
In Spalte B die Artikelnummer
Das ganze soll ungefähr so aussehen:
1x 001, 1x003, 3x 010, 70x 033
Ob per Formel oder VBA wäre mir noch egal, momentan habe ich mich an Formeln und =WENN versucht, aber nur mit dem Ergebnis das zwar die Stückzahl angepasst wird, aber die Artikelnummer immer angezeigt wird. Wichtig wäre mir eben wenn keine Stückzahl angegeben ist, soll auch keine Artikelnummer angezeigt werden.
Würde mich über eure Tips und Hilfe freuen! Vielen Dank schonmal!

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
=TEXT(A1;"0\x """&TEXT(B1;"000")&""";;;") --orT
16.12.2014 12:17:25
Luc:-?
Gruß, Luc :-?

AW: =TEXT(A1;"0\x """&TEXT(B1;"000")&""";;;") --orT
16.12.2014 13:03:33
zeojin
Danke für die Formel. Funktioniert soweit auch, nur das ich nicht die komplette Spalte damit bearbeitet bekomme und er mir die Daten nacheinander aufreiht
Wenn ich die Auswahl
=TEXT(A18:A21;"0\x """&TEXT(C18:C21;"000")&""";;;")
erweitere, dann nimmt er immer nur den letzten Wert aus Zeile 21, die vorherigen Werte nimmt er nicht.
Vielleicht noch als Info, zwischen den Zeilen sind leere Zeilen in denen in keiner Spalte Informationen sind.

Elemente eines Arrays...
16.12.2014 14:21:36
{Boris}
Hi,
...lassen sich nicht so ohne Weiteres verketten (das Pendant zur VBA-Funktion JOIN gibt es in der normalen Excelumgebung leider - noch - nicht).
Das musst Du schon eins nach dem andren erledigen / verketten.
VG, Boris

Anzeige
AW: Elemente eines Arrays...
17.12.2014 10:39:21
Daniel
Hi
das funkionert mit Formeln am einfachsten so:
mein Beispiel für den folgenden fall:
- Zeile 1 ist überschrift
- Spalte A: Stückzahl als Zahl
- Spalte B: Artikel als Text
Leerzeilen und Stückzahl 0 sind möglich, sollen aber nicht im Gesamtergebnis erscheinen
die zusammenfassung aller Artikel mit Stückzahl soll in C2 stehen.
dann muss in die Zelle C2 folgende Formel:
=Wenn(Und(A2>0;B2"");A2&"x "&B2&"; ";"")&C3

diese formel ziehst du dann bis ans Datenende.
die Elemente werden von unten nach oben "aufaddiert" und das Gesamtergebnis steht ganz oben in C2
Gruß Daniel

Anzeige
Ich weiß ja nicht, was du da machst, ...
16.12.2014 14:26:20
Luc:-?
…Zeojin,
aber deine FmlErweiterung erfordert eigentlich eine MatrixFml, anderenfalls hat sie keine andere Wirkung als das auf nur eine Zeile bezogene Original. Allerdings tritt das, was du beschreibst, nur auf, wenn du die Fml in Zeile21 platzierst, aus dem bereits genannten Grund.
Davon, dass du mehrere Zeilen in einer Zelle zusammenfassen willst, hast du nichts erwähnt, denn das geht natürlich so nicht. Es gibt keine XlStandardFkt, mit der man die Werte der Zellen eines Bereichs zu einem Wert verbinden kann. Auch VERKETTEN fktt nach dem MatrixPrinzip → Vektoren und Matrizen wdn einzelwertweise miteinander verknüpft! Du musst also alle Zellen (eines Blocks einzeln aufführen!
Wenn dir das zu umständlich ist, musst du auf eine VBA-basierte UDF wie VJoin, MxJoin, Verketten2 (im Archiv) o.ä. zurückgreifen. Die MatrixFml könnte dann so aussehen:
{=VJoin(TEXT(A18:A21; "0\x """&TEXT(C18:C21;"000")&""";;;");", ") }
Allerdings lässt die UDF in der im Archiv enthaltenen Vs1.0 nicht das Weglassen von LeerWerten zu. Das kann man aber mit einer etwas längeren Fml, dem Block muss dann eine LeerZeile folgen, ausgleichen:
{=VJoin(TEXT(A18:A32;"0\x """&TEXT(C18:C32;"000")&""";;;")&WENN((A19:A33="") +(C19:C33="")>0;"";", ");"") }
Gruß, Luc :-?

Anzeige
AW: Ich weiß ja nicht, was du da machst, ...
16.12.2014 15:44:49
zeojin
Äääähm OK, da ich mich mit VBA erst seit Anfang dieser Woche beschäftige: Wie muss ich den Code oben einbinden? Habe bisher nur über ActiveX Befehlsschaltflächen gearbeitet.
ALso gehe ich oben auf Entwicklertools-Visual Basic und dann?

So jetzt habe ich die ganze Erläuterung ...
17.12.2014 04:40:29
Luc:-?
…umsonst geschrieben, weil der dämliche FF-Browser nach der letzten Aktualisierung ständig mit Dokument erloschen! nervt, was er früher nur auf bestimmten Servern getan hat.
Deshalb muss ich dich bitten, dir die nötigen Kenntnisse selbst anzulesen, nochmal schreibe ich das nicht!
Kurzfassung: [[alt][F11]] → VBE startet → links-oben Rechtsklicken → Menü Einfügen - Modul → rechts dann UDF-Code einkopieren (UDFs wdn im FmlAssi angezeigt, SubProzeduren im MakroAssi) → Datei als .xlsm bzw .xlsb speichern (auch bei XLM-FktsVerwendung!). Bei Auslagerung von VBA-Pgmm in Personal.xlsm/b bzw aktives AddIn (.xlam/b) kann auch als .xlsx gespeichert wdn.
Etwas kürzere MatrixFmlAlternative:
{=WECHSELN(GLÄTTEN(VJoin(TEXT(A18:A31;"0\x"""&TEXT(C18:C31;ZEICHEN(160)&"000;;")&""";;;")));" ";", ") }
Vorteil aller Fmln: Form der Angabe in C18/A18ff irrelevant, TEXT verarbeitet auch numerische Textwerte (vgl AW an neopa!).
Morrn, Luc :-?
Besser informiert mit …

Anzeige
Interessehalber nachgefragt ...
16.12.2014 16:18:31
neopa
Hallo Luc,
... wie bist Du auf ein derartiges "vertracktes" Format gekommen? Da brauch ich mehr Gehirnschmiere diese richtig zu verstehen. Mein "Nischel" gibt das zumindest heute nicht her.
Ich hätte hier sicherlich für den Fall der einfachen Verkettung zweier Zellwerte z.B. einfach
 =WENN((A1>0)*(B1>0);A1&"x "&TEXT(B1;"000");"") 
geschrieben.
Allerdings wenn ich Dein Format so ansehe, wäre es da nicht "richtiger" dies um zwei Semikolon zu kürzen und dafür um ein "" zu verlängern?
Also ich meine das so:
=TEXT(A1&"";"0\x """&TEXT(B1&"";"000")&""";")
Damit würde es bei fehlender Artikelnummer und vorhandener Stückzahl nicht eine "Stückzahl x 000" geben. Oder wie würdest Du Dein Format so abändern, dass in so einem Fall möglichst gar nichts ausgegeben wird?
Gruß Werner
.. , - ...

Anzeige
Warum sollte ich aus A1 erst Text machen, ...
16.12.2014 20:26:20
Luc:-?
…Werner?
Bei deiner Variante fktioniert's ja auch nur, weil das Pgm von TEXT ganz genau wie die vbFkt IsNumeric auch TextZahlen als Zahlen behandelt, sogar, wenn du ein Leerzeichen nachsetzen würdest.
Insofern ist dein Format wohl vertrackter… ;-)
Die Anzahl der Semikolons ist schon richtig, da wohl kaum negative Werte oder TextZahlen auftreten dürften/sollten und leer(=0!) nicht angezeigt wdn soll. Falls die ProduktNrn als Text vorliegen kann auch auf die 2.TEXT-Formatierung verzichtet wdn (nicht aber auf den C-Inhalt!).
Hier gehe ich also von echten, 3stellig formatierten Zahlen in C aus. Alternativ könnte die Fml mit einer Trivial-UDF (ersatzweise mit XLM-Fkt ZELLE.ZUORDNEN in benannter Fml und Namensverwendung in der ZellFml) auch so aussehen:
=TEXT(A18;"0\x """&GetText(C18)&""";;;")
Dadurch würde die Fml noch etwas kürzer.
Die Ausgabe einer ProduktNr 000 halte ich für unverfänglich. Wahrscheinlich sind die PNrn ohnehin vorgegeben und nur die StückZahlen flexibel. Eine fehlende PNr wäre dann ein PlausibilitätsFehler, dessen Auffinden mit BedingtFormatierung unterstützt wdn könnte. Anderenfalls könnte die Fml auch so lauten: =TEXT(A18;"0\x """&TEXT(C18;"000;;")&""";;;")
Das ergibt in diesem Fall dasselbe wie deine Fml, ist aber etwas kürzer.
In Anbetracht der Tatsache, dass diese Angaben blockweise in einem Wert zusammengefasst wdn sollen, ist das aber nicht unbedingt günstiger, weshalb ich in der EndFml auch nichts ändere (nur noch eine Alternative anbiete → s.ob).
Gruß, Luc :-?

Anzeige
aber genau das machst Du (auch), ...
17.12.2014 08:07:48
neopa
Guten Morgen Luc,
... denn das Ergebnis ist ein Text, egal mit welcher Formel.
So wie Du jetzt argumentierst, könnte ich jetzt folgende Kurzformel mit analogem Ergebnis wie _ Deine Formeln ins Spiel bringen:

=WENN(A1>0;A1&"x "&TEXT(B1;"000;;");"")

Doch mir ging es weder um diese Ergebnis (welches als solches eh nicht mehr gefragt war) sondern darum, das und wie Du die Textformatangabe durch Formel generierst hast. Das fand ich als neu, interessant und diskussionswürdig.
Gruß Werner
.. , - ...

Aber erst zum Schluss, weil das ja durch TEXT ...
17.12.2014 13:52:15
Luc:-?
…bedingt und wg der Zusammenführung auch notwendig ist, Werner;
ansonsten ist das nicht so neu. Man kann mit TEXT alles Mögliche an eine Zahl heran- oder ihr aufformatieren, auch ganze Fmln, die man dann in benannter Fml mit XLM-Fkt AUSWERTEN (lokale Form) oder per VBA mit vbMethode Evaluate (US-OriginalForm) weiterverarbeiten kann.
Interessant finde ich hier eher, dass TEXT jede numerische ZeichenFolge als Zahl interpretiert (wobei LeerZeichen=Blanks irrelevant sind), sicher auch richtig geschriebene wissensch Exponential­Notationen (IsNumeric akzeptiert hier auch D/d wie E/e!) und evtl gar Uhrzeiten mit P-/A-Zusatz. Kannst ja mal alles Mögliche testen… ;-)
Gruß, Luc :-?

Anzeige
alles Mögliche werde ich wohl nicht testen ...
17.12.2014 14:18:12
neopa
Hallo Luc,
... da bräuchte ich wohl zuviel Zeit.
Aber ich hab diese spez. Möglichkeit jetzt erst einmal für mich erkannt. Kommt Zeit kommt Rat.
Das TEXT() jede numerische Zeichenfolge als Zahl interpretiert, halte ich nun wiederum nicht als etwas besonderes, denn Excel tut das standardmäßig bei Eingabe in Standard formatierte Zellen doch ansonsten so auch immer.
Gruß Werner
.. , - ...

Xl ja, aber viele xlFktt eben nicht! Dabei ...
17.12.2014 16:20:11
Luc:-?
…zählt die Umwandlung mittels Operator ebenfalls zu den XlFeatures, Werner,
also zum HptPgm (geht nicht in VBA bzw kann sich im Falle von + anders auswirken), während jede xlFkt ja ihr eigenes Pgm hat und sie dann folglich nur im Rahmen ihrer Pgmierung mit ihren Argumenten verfahren kann (dazu zählt dann wahrscheinlich auch, inwieweit all­gemeine xlRoutinen Einfluss haben können). Dabei ist verständlich, dass xlFktt (zB ZÄHLENWENN), denen bestimmte Argumente als Text bzw texterzeugender Ausdruck übergeben wdn müssen, nicht zwischen echten und TextZahlen unterscheiden können, denn das Fkts­Pgm muss ja die Zahlen aus dem GesamtText isolieren und in dem können sie ja nur als TextZahl vorliegen (vor dem Problem stand ich beim Pgmieren von UDFs auch schon oft). Das muss aber bei Arg1 von TEXT nicht so sein, wird aber offensichtlich auch so gehand­habt, woraus sich dann der gravierende Unterschied zwischen dem Ergebnis dieser Fkt und dem der (benutzer­definierten) Formatierung ergibt.
Luc :-?
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige