Hallo zusammen,
ich habe folgende Ausgangssituation:
D F I ....
Artikel 1 x x
Artikel 2 x x
Artikel 3 x x
...
Die Artikel kommen aus verschiedenen Ursprungsländern, die "x" sind
natürlich variabel. Es können unterschiedlich viele Artikel und
unterschiedlich viele Ursprungsländer sein.
Für jeden Artikel benötige ich nun folgenden Text:
"Artikel 1 D F"
"Artikel 2 F I"
"Artikel 3 D I" usw.
Ist das mit Tabellenfunktionen machbar?
Danke für Eure Tipps!
Am Tue, 8 Dec 2009 00:39:01 -0800 schrieb J�rgen Dietze:
> D F I ....
> Artikel 1 x x
> Artikel 2 x x
> Artikel 3 x x
> ...
>
> Die Artikel kommen aus verschiedenen Ursprungsl�ndern, die "x" sind
> nat�rlich variabel. Es k�nnen unterschiedlich viele Artikel und
> unterschiedlich viele Ursprungsl�nder sein.
> F�r jeden Artikel ben�tige ich nun folgenden Text:
>
> "Artikel 1 D F"
> "Artikel 2 F I"
> "Artikel 3 D I" usw.
probiers mal so:
=A2&WENN(B2="x";" "&$B$1;)&WENN(C2="x";" "&$C$1;)&WENN(D2="x";" "&$D$1;)
Mit freundlichen Gr�ssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Gib als Matrixformel ein (also mit STRG + SHIFT + ENTER abschließen,
nicht nur mit ENTER):
=A2&" "&MultiCat(WIEDERHOLEN($B$1:$E$1;B2:E2="x");" ")
und kopiere dann hinunter...
MultiCat ist ein Makro, welches Du hier findest:
http://sulprobil.com/html/concatenate.html
(Einfach ALT + F11 drücken, ein neues Makromodul einfügen, meinen
Makrocode hineinkopieren, und dann zurück in die Tabelle und das Makro
wie eine normale Funktion verwenden.)
Ohne MultiCat wird es unelegant, fürchte ich.
Viele Grüße,
Bernd
Das x gibt mir an, ob die Kombination aus Artikel und Land vorkommt.
Gruß
Jürgen Dietze
> Das x gibt mir an, ob die Kombination aus Artikel und Land vorkommt.
Steht denn da ein explizites "x" oder steht in jeder Zelle ein anderer Text
anstelle des x?
In letzterem Falle ersetzt Du in den Formeln von Claus und Bernd jedes Vorkommen
von
="x"
durch
<>""
="x" prüft, ob explizit x eingetragen ist.
<>"" prüft darauf, dass die Zelle nicht leer ist.
Gruß
Bernhard Sander
>
> Ist das mit Tabellenfunktionen machbar?
Hallo J�rgen,
das hat Claus bereits beantwortet.
Je nach Anzahl der L�nder kann diese Formel aber recht lang werden.
Alternative: benutzerdfinierte Funktion
im folgenden Beispiel mit den L�ndern Deu, Eng, Fra und It in B1:E1 und den
Artikeln in A2:A4
(entsprechend Deinen Verh�ltnissen anpassen!)
Public Function Kombination(ByVal x As Range) As String
Dim arrL�nder
Dim inti as integer
arrL�nder = Array("Deu", "Eng", "Fra", "It")
Kombination = x.Cells(1)
For inti = 1 To UBound(arrL�nder)
If x.Cells(inti + 1) = "x" Then
Kombination = Kombination & " " & arrL�nder(inti - 1)
End If
Next
End Function
Funktionsaufruf in z. B. F2:
=Kombination(A2:E2)
und dann runterziehen.
--
Mit freundlichen Gr�ssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
Der Vorschlag von Claus ist zwar einfach umzusetzen, aber bei 40 möglichen
Ländern doch sehr lang. Ich hatte gehofft, dass dies über eine Matrixformel
direkt zu lösen sei, so nach dem Motto:
={verketten((B1:Z1)*(B2:Z2)="x"))}
Okay, dann werde ich mich mal den Makrolösungen nähern...
Gruß
Jürgen Dietze
"Jürgen Dietze" <Jrgen...@discussions.microsoft.com> schrieb im
Newsbeitrag news:D496E778-36A6-4ECD...@microsoft.com...
> Hallo an alle,
> danke für die vielen Hinweise.
>
> Der Vorschlag von Claus ist zwar einfach umzusetzen, aber bei 40 möglichen
> Ländern doch sehr lang. Ich hatte gehofft, dass dies über eine
> Matrixformel
diese "eleganten" Matrixformel wird es IMHO nicht geben. Ich sehe nur noch
den Iteraterationsweg, wenn es nicht VBA sein soll. Hier mal ein Beispiel:
http://www.excelformeln.de/formeln.html?welcher=155
Gruß
Klaus
Damit geht es natᅵrlich recht kurz. Zum Beispiel mit einer
benutzerdefinierten Funktion. Im Code mᅵsstest evtl. noch die erste
Lᅵnderspalte (hier "C") anpassen. In dieser Spalte beginnt die Funktion
zu suchen. Dann geht es nach rechts solange wie in Zeile 1 Lᅵnder
stehen. Es dᅵrfen also keine Lᅵcken in Zeile 1 sein.
B2: =Laender(A2))
B3: =Laender(A3))
B4: =Laender(A4))
+-----+-----------+-----+-----+-----+-----+
| | A | B | C | D | E |
+-----+-----------+-----+-----+-----+-----+
| 1 | | | D | F | I |
+-----+-----------+-----+-----+-----+-----+
| 2 | Artikel 1 | D F | x | x | |
+-----+-----------+-----+-----+-----+-----+
| 3 | Artikel 2 | F I | | x | x |
+-----+-----------+-----+-----+-----+-----+
| 4 | Artikel 3 | D | x | | |
+-----+-----------+-----+-----+-----+-----+
Function Laender(zelle As Range) As String
Laender = zelle
Set zelle = Cells(zelle.Row, "C") '/Erste Lᅵnderspalte/
While Cells(1, zelle.Column) <> ""
If LCase(Trim(zelle)) = "x" Then
Laender = Laender & " " & Cells(1, zelle.Column)
End If
Set zelle = zelle(1, 2)
Wend
End Function
Peter
Die Matrixformel Lösung habe ich bereits genannt. Mein Makro MultiCat
liefert lediglich die bei VERKETTEN vermisste Matrixfaehigkeit.
Iterationen sind m. E. keine gangbare Lösung.
Viele Grüße,
Bernd
"Bernd P" <bplu...@gmail.com> schrieb im Newsbeitrag
news:52fc536c-d580-4157...@20g2000vbz.googlegroups.com...
> Hallo,
>
> Die Matrixformel L�sung habe ich bereits genannt. Mein Makro MultiCat
> liefert lediglich die bei VERKETTEN vermisste Matrixfaehigkeit.
>
> Iterationen sind m. E. keine gangbare L�sung.
Es ist denkbar, dass es Restriktionen gibt, die Makros nicht zulassen.
Deshalb gibt es zum Gl�ck L�sungen, die darauf verzichten konnen.
Gru�
Klaus
> ...
> Es ist denkbar, dass es Restriktionen gibt, die Makros nicht zulassen.
> Deshalb gibt es zum Glück Lösungen, die darauf verzichten konnen.
> ...
Genau da sind wir unterschiedlicher Meinung. IMHO ist es undenkbar,
dass jemand mit Deiner "Lösung" glücklich wird.
Nichts für ungut, aber der Iterationsansatz ist Unfug.
Viele Grüße,
Bernd
"Bernd P" <bplu...@gmail.com> schrieb im Newsbeitrag
news:0ac8f4fe-cf72-4fce...@u7g2000yqm.googlegroups.com...
> Genau da sind wir unterschiedlicher Meinung. IMHO ist es undenkbar,
> dass jemand mit Deiner "L�sung" gl�cklich wird.
w�re sch�n, wenn ich mir die ausgedacht h�tte, aber die Idee hatten schon
andere.
> Nichts f�r ungut, aber der Iterationsansatz ist Unfug.
und deine L�sung bringt niemanden weiter, wenn Makros systemseitig verboten
sind.
Gru�
Klaus
> ...
> w re sch n, wenn ich mir die ausgedacht h tte, aber die Idee hatten schon
> andere.
> ...
Meine Meinung nach setzt niemand diese Idee in der Praxis ein, auch Du
nicht (richtig?).
> ...
> und deine L sung bringt niemanden weiter, wenn Makros systemseitig verboten
> sind.
> ...
Der Fall liegt hier wohl nicht vor.
Falls aber Makros verboten wären, würde ich einen Pivottabellenansatz
versuchen.
Meine Grundregel lautet: Schlage nichts vor, was Du nicht auch selbst
einsetzen würdest. Am besten schlägt man vor, was man bereits seit
Jahren mit guten Ergebnissen verwendet.
Iterationen gehören da mit Sicherheit nicht zu. Im Gegenteil: Ich
finde, sie führen einen weniger versierten (na, eigentlich alle) Excel
Anwender in die Irre.
Es gibt Unterschiede zwischen einer pfiffigen Idee und einer
praxistauglichen.
Viele Grüße,
Bernd
"Bernd P" <bplu...@gmail.com> schrieb im Newsbeitrag
news:d571fd5b-f3cd-42ae...@c3g2000yqd.googlegroups.com...
>> und deine L sung bringt niemanden weiter, wenn Makros systemseitig
>> verboten
>> sind.
>> ...
> Der Fall liegt hier wohl nicht vor.
Diesen Hinweis vom OP hab ich wohl �berlesen, aber vielleicht liegt
dieser Fall bei jemandem vor, der mitliest und eine �hnliche Aufgabe
l�sen m�chte.
> Falls aber Makros verboten w�ren, w�rde ich einen Pivottabellenansatz
> versuchen.
wie das auf diesen Fall anzuwenden ginge, w�rde mich interessieren.
Lass doch einfach jeden f�r sich selbst die angebotenen L�sungen
ausprobieren
und die sich f�r ihn daraus ergebende beste L�sung w�hlen ohne dass gleich
andere Ans�tze abgewertet werden.
Gru�
Klaus