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

Array generieren

Array generieren
{Boris}
Hi Leute,
in der ersten Spalte (A2:A4) stehen Zahlen, in der 2. Spalte (B2:B4) deren Häufigkeit. Ich möchte nun ein Array aus allen Zahlen generieren:
Zahl       Häufigkeit
2               6
1               4
3               7

Heißt: Die 2 kommt sechs mal vor, die 1 vier mal und die 3 sieben mal.
Mein Wunscharray sieht also so aus:
{2.2.2.2.2.2;1.1.1.1;3.3.3.3.3.3.3}
Mit
=TEIL(WIEDERHOLEN(A2:A4;B2:B4);SPALTE(A:J);1)
erhalte ich das Array
{"2"."2"."2"."2"."2"."2".""."".""."";"1"."1"."1"."1".""."".""."".""."";"3"."3"."3"."3"."3"."3"."3".""."".""}
Würd´s aber gerne ohne Leerstrings "" haben. Wie kann man das noch/anders (ohneVBA/UDF/Excel4-Makrofunktionen etc.) anstellen?
Grüße Boris
wenn du das nicht weißt ...
Uduuh
Hallo Boris,
... wer dann?
Hast du Walter schon gefragt?
Gruß aus’m Pott
Udo

Könnte ja sein...
{Boris}
Hi Udo,
...dass ich einfach mal ein Brett vor´m Kopf hab ;-)
Irgendwie will ich noch nicht wahrhaben, dass es nicht noch anders geht. Und außerdem tummeln sich hier doch auch viele schlaue Köpfe :-)
Und nein - Walter hab ich noch nicht gefragt - aber der liest hier ja auch regelmäßig mit :-)
Grüße Boris
da bin ich raus
Uduuh
Hallo Boris,
VBA wär leicht. Aber für Matrizen fehlen mir die {}
Ich werde drüber nachdenken. Es reizt!
Allerdings: Ne Matrix ist x*y. Wie willst du leere Elemente ausgrenzen? (das ist ja wohl die Frage) Irgendwas mit Hilfszellen?
Gruß aus’m Pott nach ddf
Udo

Anzeige
Dann lass mal rauchen...
{Boris}
i Udo,
...den Schädel ;-)
Die leeren Elemente entstehen in meinem Beispiel ja nur durch die statische Angabe von SPALTE(A:J). Wenn man das dynamisieren könnte, wären die "" schon weg. Aber vielleicht gibt´s ja auch noch nen ganz anderen Ansatz?!
Grüße Boris
ich mach jetzt erst mal Heia owt
Uduuh
Zusatz
Uduuh
Hallo,
Und nein - Walter hab ich noch nicht gefragt - aber der liest hier ja auch regelmäßig mit :-)

Soooo regelmäßig auch wieder nicht. Zumindest antwortet er selten.
Gruß aus’m Pott
Udo

Zumindest hat er den PC...
{Boris}
Hi Udo,
...nahezu 24 Stunden an. Und er antwortet auch nur ungern auf "Banalitäten" und schon gar nicht auf VBA-Themen ;-)
Grüße Boris
Anzeige
Banalitäten
Uduuh
Hi Boris,
hab ich mir auch schon überlegt: 10000x gefragtes nicht zu beanworten.
Aber immer wieder schlägt das Helfersyndrom durch ;-)
WF ist da konsequenter.
Gruß
Udo
Dein 'Wunsch-Array' gibt's nicht,...
Luc:-?
…Boris!
XL würde sich weigern, das in eine Bereichsmatrix einzutragen oder damit in irgendeiner Form zu rechnen. Insofern ist die Suche nach der Lösung müßig. Etwas annähernd Vergleichbares kann man nur als Inhalt eines Variants, Untertyp Array erzeugen. Eine Matrixkonstante, denn darum handelt es sich bei deiner Darstellung, muss in allen Zeilen gleichviele Spalten haben. Dein FmlErgebnis erfüllt diese Bedingung, dein Wunschkandidat nicht
Das hätte dir Walter bestimmt sofort sagen können… ;-)
Vielleicht hast du aber was Anderes damit vor? Dann würde ich aber nicht diese Form wählen, denn mit Formeln machbar mag das schon sein. Selber verwende ich dafür aber lieber 'ne udF, der man mitteilen kann, ob Leerfelder eingeschlossen wdn sollen oder nicht…
Gruß Luc :-?
Anzeige
Ist schon klar...
{Boris}
Hi Luc,
...dann machen wir eben ein eindimensionales "Wunsch-Array" draus:
{2.2.2.2.2.2.1.1.1.1.3.3.3.3.3.3.3} - oder natürlich auch vertikal.
Es sollen nur alle Elemente enthalten sein - und eben nix Überflüssiges.
Grüße Boris
nur zu Fuß und nur Optik
WF
Moin Boris,
="{"&LINKS(WIEDERHOLEN(A2&".";B2)&WIEDERHOLEN(A3&".";B3)&WIEDERHOLEN(A4&".";B4);SUMME(B2:B4)*2-1) &"}"
aber, wozu soll das gut sein?
WF
Oh, das kann schon zu was gut sein,...
Luc:-?
…Walter,
sonst hätte ich mir nicht auch schon mal so etwas überlegt… ;-)
In Boris' speziellem Fall könnte man verdichtete bzw ermittelte Ergebnisse für irgendwelche andere Operationen als Feld bereitstellen. Ich habe so etwas entwickelt, um Fundstellen aufzulisten u.ä. Danach könnte man Zellen auswählen wie mit INDEX, aber eben auch unzusammenhängende (sog Mehrfachauswahlen). Ja, man kann mit solchen Listen (müssen ja nicht unbedingt in MxKonstForm vorliegen) sogar rechnen, eine ganze Reihe spezieller Fktt schaffen, die damit arbeiten können — eine ganze Fktsgruppe, die in StandardXL fehlt! So könnte man auch nicht zu lange mathematische Reihen (ab Xl12 dürfen sie deutlich länger sein!) bearbeiten usw usf. Es gibt schon 'ne Menge Möglichkeiten…
Gruß Luc :-?
Anzeige
So ist es...
{Boris}
Hi Luc,
...hab Deinen Ausführungen nix hinzuzufügen :-)
Grüße Boris
AW: Array oder Matrix ?
Renee
Hi Boris,
Die Matrix nach rechts und unten kopierbar, mit linker oberer Ecke in D2:
{=WENN(SPALTE(D2)-SPALTE($C2)
GreetZ Renée
Hab was falsch verstanden, und mein...
Renee
Hirn schläft noch {Boris},
1. Wieso ich {blablab;Bereich.Verschieben} benutzte ? Schlaf und falsche Fixierung! Irgendwie hab ich das Gefühl, ich erhalte was ähnliches wie deine Teil-Formel, nur mit:
=WENN(SPALTE(D2)-SPALTE($C2)
2. Wohin das Array geschrieben werden soll, versteh ich noch nicht? 1 Zelle, oder n Zellen (vertikal, horizontal oder beides?
GreetZ Renée
Anzeige
Bisschen spät für schlafendes Hirn... ;-) orT
Luc:-?
Moyn, Luc :-?
Das Array soll nirgends "hingeschrieben"...
{Boris}
Hi Renée,
..., sondern einfach nur erzeugt werden ;-)
Wozu das gut sein kann, hat Luc ja bereits ausgeführt.
Grüße Boris
dann schau mal unten bei Christian
WF
Hi Boris,
fand ich erst bescheuert - auf den zweiten Blick hat das aber Pfiff.
WF
Hab ich gesehen...
{Boris}
Hi Walter,
...wobei die Dynamik mit SPALTE und ADRESSE besser mit ZEILE gelöst wird:
=TEIL(WIEDERHOLEN(A2;B2)&WIEDERHOLEN(A3;B3)&WIEDERHOLEN(A4;B4);ZEILE(INDIREKT("1:"&SUMME(B2:B4)));1)
Ohne Frage entsteht dadurch das gewünschte eindimensionale Array ohne leere Elemente - was mir halt noch nicht gefällt, ist die derzeit noch notwendige Verkettung der einzelnen Elemente:
WIEDERHOLEN(A2;B2)&WIEDERHOLEN(A3;B3)&WIEDERHOLEN(A4;B4)
Schaun mer mal, ob uns dazu noch was einfällt :-)
Gruß
Boris
Anzeige
Dann wird's wohl doch VBA...! ;-) Gruß owT
Luc:-?
:-?
...bspw mit einer meiner udFktt,...
Luc:-?
…Boris… ;-)
{=WECHSELN(RA2VxList(GLÄTTEN(WIEDERHOLEN(A2:A4&" ";B2:B4));-1);" ";".")}
…oder einer anderen… ;-))
{=WECHSELN(ListOn(GLÄTTEN(WIEDERHOLEN(A2:A4&" ";B2:B4));"{.}");" ";".")}
Gruß Luc :-?
Wie wär's denn mit 2 Formeln und ein...
Luc:-?
…bisschen Formatierung eines von euch ungeliebten Typs, Boris…? ;-)
{2.2.2.2.2.2.1.1.1.1.3.3.3.3.3.3.3} ergibt sich auch aus bspw…
VbZelle A14[:D14]:="{"&WECHSELN(B14&C14&D14&".";"..";"}")
B14:D14: {=MTRANS(WIEDERHOLEN(A10:A12&".";B10:B12))}

Dabei wird der ohnehin benötigte Platz optimal genutzt (keine Leerzellen!), die HilfsFml ist nicht zu sehen und es können nahezu beliebig viele Elemente eingearbeitet wdn. Die Spalten können ja ggf entsprechend schmal gehalten wdn. Das kann natürlich so nicht direkt in eine anderweitige Fml eingebaut wdn; mit ein bisschen Überlegungsglück ggf schon…
Gruß + schöVierAdWE,
Luc :-?
PS: Spontan wäre mir als Alternative sonst auch nur so etwas in der Art von Christians Alternativvorschlag eingefallen, weil ich das zugrunde liegende Prinzip schon anderweitig angewendet habe. Allerdings ist das doch arg begrenzt…
Noch 'ne ergänzende Anwendung für Zahlenlisten (nicht unbedingt als MxKonst): Mengenlehre → Habe udFktt, die für 2 solcher Listen, Differenz- bzw Schnittmenge ermitteln.

Anzeige
AW: Array generieren
Christian
Hi Boris,
ein wahrscheinlich wenig eleganter Ansatz
=TEIL(WIEDERHOLEN(A2;B2)&WIEDERHOLEN(A3;B3)&WIEDERHOLEN(A4;B4);SPALTE(INDIREKT("A:"&LINKS(ADRESSE(1; SUMME(B2:B4);4);1)));1)
Gruß
Christian
Das Ergebnis ist sehr gut...
{Boris}
Hi Christian,
...wenn wir es jetzt noch schaffen, die Verkettung der einzelnen Elemente
WIEDERHOLEN(A2;B2)&WIEDERHOLEN(A3;B3)&WIEDERHOLEN(A4;B4)
zu eliminieren bzw. zusammenzufassen (damit das auch mit mehr als 3 Zahlen funktioniert), dann ist´s perfekt :-))
Gruß
Boris
noch ein Ansatz
Christian
Hi Boris,
ich bin kein Formel-Guru und wenn es klemmt, bemühe ich euer excelformeln.de.
Klar - Zeile statt Spalte - aber wie du schon sagst, das Problem ist der zusammengesetzte String.
Hier ein weiterer Ansatz mit diversen Einschränkungen:
  • Das ganze funktioniert nur, solange die Summe in "B2:B4" kleiner als 16 ist.

  • In Spalte C stehen zusätzlich die Positionen - in Zelle C2: =SUMME(B$2:B2)-B2+1 und nach unten ziehen.

  • Bsp-Daten:
    Zahl	Häufigkeit	Position
    62	6		1
    61	4		7
    63	5		11	
    

    Formel:
    =TEIL(SUMME(ERSETZEN(WIEDERHOLEN(0;SUMME(B2:B4));C2:C4;B2:B4;WIEDERHOLEN(A2:A4;B2:B4))*1E-307) *1E+307;ZEILE(INDIREKT("1:"&SUMME(B2:B4)));1)
    Der Teil innerhalb der Summe erzeugt das Array: {"222222000000000";"000000111100000";"000000000033333"}
    und SUMME(...)*1E-307)*1E+307 liefert den gesuchten String: 222222111133333
    mit den genannten Einschränkungen.
    Wie gesagt, ist nur ein Ansatz.
    viele Grüße
    Christian
    Anzeige
    bei den Beispiel-Daten...
    Christian
    ...ist wohl eine 6 zuviel reingerutscht...
    so hätte das aussehen sollen:
    Zahl	Häufigkeit	Position
    2	6		1
    1	4		7
    3	5		11	
    
    Christian
    ...und natürlich ...
    Christian
    ... kann man auf Multiplikation von 1E-307 und 1E+307 verzichten und statt dessen mit 1 multiplizieren.
    Das waren noch Reste von anderen Zwischenversuchen.
    Christian
    Ich schau mir das später noch an
    {Boris}
    Hi Christian,
    ...hab jetzt keine Zeit. Aber danke schonmal - ich melde mich wieder!
    Grüße Boris
    Oben nicht gesehen? owT
    Luc:-?
    :-?
    mit 2 Hilfsspalten...
    Christian
    ... könnte das ungefähr so aussehen.
    https://www.herber.de/bbs/user/72729.xls
    Hi Boris,
    ich weiß, du suchst eine zentrale Formel - hätte nicht gedacht, dass sich dieses Thema so schwierig gestaltet.
    Wie man bei der Bsp-Datei die Hilfsspalten eliminieren kann ... dazu fällt mir leider nichts ein.
    Evlt. hilft das Beispiel bei der weiteren Entwicklung.
    Grüße
    Christian
    Jetzt lässt das Geniale aber nach...! ;-) orT
    Luc:-?
    Gruß+schöVierAd, Luc :-?

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige