Microsoft Excel

Herbers Excel/VBA-Archiv

daten in abhängigkeit ihrer häufigkeit... | Herbers Excel-Forum


Betrifft: daten in abhängigkeit ihrer häufigkeit... von: jockel
Geschrieben am: 07.01.2010 21:43:06

hi @ all, ich möchte in Spalte D die daten aus der Spalte A sooft untereinander darstellen, wie sie in Spalte B auftreten, ich habe mir schon einige zeit den kopf zermartert, ich komme leider auf kein zufriedenstellendes ergebnis... ... vielleicht kann mir hier geholfen werden?

Tabelle3

 ABCD
210  2
323  2
432  2
540  3
651  3
7      5

Tabellendarstellung in Foren Version 5.3


cu jörg

  

Betrifft: Deine Beschreibung scheint nicht zu stimmen,... von: Luc:-?
Geschrieben am: 07.01.2010 22:01:41

...Jockel:
...sooft untereinander darstellen, wie sie in Spalte B auftreten...
In deinem Bsp hast du die aber so oft dargestellt wie in Spalte B angegeben. Das scheint mir doch ein ziemlicher Unterschied zu sein...
Gruß Luc :-?


  

Betrifft: okay... von: jockel
Geschrieben am: 07.01.2010 22:07:05

ja, ich gebe mich geschlagen, war wahrscheinlich nicht ausgereift formuliert, aber auch ich hatte einen harten tag... sorry, du hast recht, wie an- oder vorgegeben in Spalte B, in meiner datei ist es eine häufigkeit, die auftritt, aber das ist nicht das problem...

gruß zurück jörg


  

Betrifft: Ohne Hilfsspalte wird das wahrscheinlich... von: Luc:-?
Geschrieben am: 07.01.2010 22:37:22

...schwierig, Jockel,
also 'ne ziemlich lange Fml, weil man nicht mit einer Gesamtmatrix arbeiten kann, weil...
1. ein Vektor rauskommen soll und...
2. wenn es ein Feld wäre, jede Zeile unterschiedl viele bzw kein Element(e) haben kann, so dass...
...auch kaum was nachträglich mit MTRANS zu machen wäre. Da ich davon ausgehe, dass das nur ein kurzes Bsp ist, könnte die zeilenweise Abarbeitung ziemlich aufwendig wdn. Dabei ist die Vermehrung der Werte in Sp A kaum ein Problem (ggf mit WIEDERHOLEN/Text in Spalten oder Spaltenzählen), aber dafür die Anordnung untereinander. Mit Hilfsspalte wäre es folglich leichter, allerdings wäre ggf der manuelle Nachbearbeitungsaufwand größer — es sei denn, du benutzt VBA...
Gruß Luc :-?


  

Betrifft: mit einer Hilfsspalte könnte ich ... von: jockel
Geschrieben am: 07.01.2010 23:00:29

hi Luc, leben. mehr als 4 vorkommnisse sind nicht vorgesehen, pro zahl in Spalte B.. und mehr als 31 zahlen (tage) in spalte A auch nicht (stichwort monat)... ..- das das schwierig wird habe ich schon mitbekommen - ich bin ja auch kein kleiner dummer ;-)

vielleicht fällt dir (oder jemand anderen) noch was ein?!?

würde mich freuen

cu jörg


  

Betrifft: Mit meiner (ud)Fktsausstattung habe ich schon... von: Luc:-?
Geschrieben am: 07.01.2010 23:12:49

...eine Lösung, Jockel,
sogar ohne Hilfsspalte... Über 'ne „normale“ FmlLösung muss ich noch etwas nachdenken, aber dank deiner Präzisierung sollte das im Rahmen des „Erträglichen“ bleiben.
Damit „Konkurrenz das Geschäft belebt“ setze ich mal auf offen... ;-)
Erstmal Gute Nacht!
Luc :-?


  

Betrifft: Jetzt das Nachdenkergebnis,... von: Luc:-?
Geschrieben am: 08.01.2010 00:38:19

...Jockel...!
Da sich dein Fall recht limitiert darstellt, habe ich einfach mal meine udFktslösung in „normale“ Fmln übertragen; die Lösung ohne HSp, aber mit 2 udFktt steht in Sp D, die andere in Sp E, Hilfssp ist F (wird zu F31 kumuliert). Außerdem wird noch die benannte Fml Ergebnis (mit XLM-Fkt AUSWERTEN) benötigt. Im Folgenden mal ein Abbildungsausschnitt...



Gruß Luc :-)


  

Betrifft: ich habe versucht... von: jockel
Geschrieben am: 08.01.2010 12:25:03

hi Luc, das nachzubauen, das klappt beim besten Willen nicht, kannst Du das bitte als Datei hochladen? Ansonsten muss ich warten und hoffen auf vielleicht einen anderen vba-freien Lösungsvorschlag...
Stelle es deswegen wieder auf offen.

Danke trotzdem für Deine Überlegungen und Mühe... ;-)

cu jörg


  

Betrifft: Inzwischen hast du ja 'ne hilfsspaltenfreie... von: Luc:-?
Geschrieben am: 08.01.2010 18:50:42

...FmlLösung, Jockel,
aber dass du das nicht nachbauen konntest, wundert mich doch sehr nach deinem Statement... ;-)
Erst die Fml in F1, dann die in F2 und nur die dann auf alle weiteren zu erwartenden Zeilen übertragen (deshalb hatte ich die Frequenz-Summe ermittelt). Dann einen Namen definieren, hier Ergebnis, mit der AUSWERTEN-Fml im Bezug. Diese muss sich immer auf die letzte Zelle der Hilfsspalte beziehen, denn nur da steht der endkumulierte Text. Das ist natürlich etwas ungünstig, weil sich die Zellposition ja ändern kann. Das müsste dann mit einer entsprechenden Fml von excelformeln.de abgefangen wdn, aber da stehen evtl noch andere Möglichkeiten...
Zum Schluss dann noch den so erzeugten Vektor mit = und seinem Namen in die Ergebnisspalte als Matrixfml übernehmen. Das wäre es gewesen...
Jedenfalls sind meine Fmln die kürzesten. Ich sagte ja, dass hilfsspaltenfreie Lösungen lange Fmln erfordern, wie man ja auch an denselben feststellen kann. Mit ein bisschen VBA, also geeigneten udFktt, bleibt die Fml aber auch in diesem Fall kurz — in der Abb in Spalte D demonstriert...
Gruß und glückliches Überleben (des Schnee[sturm]s)!
Luc :-?


  

Betrifft: @ Luc :-? ... von: Jockel
Geschrieben am: 08.01.2010 23:31:19

ich bin gut durch den (noch nicht) Schneesturm gekommen... ich werde das weiter testen. Das mit den AUSWERTEN-Fml hatte ich nicht bedacht (überlesen) die formel TransFor() habe ich noch nie gehört... aber ich wede mich damit beschäftigen...

... nochmals vielen dank... ich will und werde einfach weiter lernen...

cu jörg


  

Betrifft: Mit der Fml in Spalte D musst du dich... von: Luc:-?
Geschrieben am: 09.01.2010 00:04:36

...nicht beschäftigen, Jockel,
das ist doch die mit 2 udFktt (groß-kleine FktsNamen) — hatte ich doch geschrieben — meine 1.Lösung, die ich dann fast 1:1 in normale Fmln (allerdings mit Hilfssp) umgesetzt habe...
Nebenbei: TransFor macht das, was AUSWERTEN macht (und noch ein bisschen mehr), aber im TabBlatt.
Gruß Luc :-?
PS: Schneemäßig tut sich im Berliner Raum z.Z. noch nichts, aber in Erfurt soll's schon sein...


  

Betrifft: @ Luc :-? ... geschafft... von: Jockel
Geschrieben am: 09.01.2010 18:26:32

hi Luc:-?, ... die Variante mit der Spalte E habe ich nun hinbekommen, danke. Es funzt - prima. Das einzige Manko, was ich so erkannt habe, dass es nicht flexibel ist, das heißt ich muss die Ergebnissplate löschen muss, wenn sich Einträge ändern... aber vielleicht habe ich da noch was übersehen... trotzdem - es klappt & danke...!

cu jörg


  

Betrifft: Na, dann, alles Gute! ;-) Gruß owT von: Luc:-?
Geschrieben am: 09.01.2010 21:56:47

:-?


  

Betrifft: hier eine VBA Lösung dazu von: Tino
Geschrieben am: 08.01.2010 08:25:41

Hallo,
vielleicht reicht ja ein kleines Makro.

Sub Auflisten()
Dim meAr(), tmpAr()
Dim A%, AA%, AAA%

With Sheets("Tabelle1")
    tmpAr = .Range("A1", .Cells(.Rows.Count, 2).End(xlUp)).Value2
    
    Redim meAr(1 To Application.WorksheetFunction.Sum(.Columns(2)), 0)
    
    For A = 1 To Ubound(tmpAr)
        For AA = 0 To tmpAr(A, 2) - 1
         AAA = AAA + 1
         meAr(AAA, 0) = tmpAr(A, 1)
        Next AA
    Next A
    
    .Range("D1").Resize(Ubound(meAr)) = meAr
End With

End Sub
Gruß Tino


  

Betrifft: Formellösung mit Hilfsspalte. von: Tino
Geschrieben am: 08.01.2010 09:26:35

Hallo,
mit Formel bekomme ich es nur mit einer Hilfsspalte hin.

 ABCDEF
1100  2
2233  2
3325  2
4405  3
5516  3
66511  5
7     6
8     6
9     6
10     6
11     6
12      

Formeln der Tabelle
ZelleFormel
C1=SUMME($B$1:B1)
F1{=INDEX($A$1:$A$5;MIN(WENN($C$1:$C$5>=ZEILE(); ZEILE($1:$5))))}
C2=SUMME($B$1:B2)
F2{=WENN(ANZAHL($F$1:F1)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
C3=SUMME($B$1:B3)
F3{=WENN(ANZAHL($F$1:F2)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
C4=SUMME($B$1:B4)
F4{=WENN(ANZAHL($F$1:F3)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
C5=SUMME($B$1:B5)
F5{=WENN(ANZAHL($F$1:F4)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
C6=SUMME($B$1:B6)
F6{=WENN(ANZAHL($F$1:F5)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
F7{=WENN(ANZAHL($F$1:F6)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
F8{=WENN(ANZAHL($F$1:F7)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
F9{=WENN(ANZAHL($F$1:F8)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
F10{=WENN(ANZAHL($F$1:F9)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
F11{=WENN(ANZAHL($F$1:F10)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
F12{=WENN(ANZAHL($F$1:F11)=MAX($C:$C); "";INDEX($A:$A;MIN(WENN($C$1:$C$100>=ZEILE(); ZEILE($1:$100)))))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!


Gruß Tino


  

Betrifft: AW: Formellösung mit Hilfsspalte. von: jockel
Geschrieben am: 08.01.2010 13:23:49

hi Tino, das sieht schon mal sehr gut aus danke, mal sehen wie weiter komme in meiner datei. aber du hast mir sehr geholfen, nun habe ich jedenfalls einen ansatz, wie geschrieben, mit einer hilfspalte kann ich leben... ohne, wäre der knaller, aber noch mal: vielen dank ;-)

cu jörg


  

Betrifft: AW: Formellösung ohne Hilfsspalte von: Daniel
Geschrieben am: 08.01.2010 14:03:29

Hi

hier eine Formellösung ohne Hilfsspalte.
https://www.herber.de/bbs/user/67080.xls
Gruß, Daniel


  

Betrifft: AW: Formellösung ohne Hilfsspalte von: jockel
Geschrieben am: 08.01.2010 14:30:39

hi Daniel, das sieht auch ganz toll aus, ich werde das nachher ausprobieren, ich muss jetzt erstmal los (vor dem großen schnee[sturm]) - ich melde mich aber zeitnah...

cu jörg


  

Betrifft: AW: Formellösung ohne Hilfsspalte von: BoskoBiati
Geschrieben am: 08.01.2010 17:43:16

Hallo Jörg,

hier mal mein Versuch, bevor ich mir die Lösung von Daniel ansehe:
Tabelle1

 ABC
1102
2232
3322
4403
5513
6605
7708
8838
9928
1010 9
1111 9

Formeln der Tabelle
ZelleFormel
C1{=WENN(B1>0;A1;INDEX($A$1:$A$5;MIN(WENN($B$2:$B$5>0;ZEILE($B$2:$B$5)))))}
C2{=WENN(ZÄHLENWENN($C$1:C1;C1)<SVERWEIS(C1;$A$1:$B$31;2;0); C1;INDEX($A$1:$A$31;MIN(WENN(INDIREKT(ADRESSE(VERGLEICH(C1;$A$1:$A$31;0)+1;2)&":B31")<>0;ZEILE(INDIREKT(ADRESSE(VERGLEICH(C1;$A$1:$A$31;0)+1;2)&":B31"))))))}
C3{=WENN(ZÄHLENWENN($C$1:C2;C2)<SVERWEIS(C2;$A$1:$B$31;2;0); C2;INDEX($A$1:$A$31;MIN(WENN(INDIREKT(ADRESSE(VERGLEICH(C2;$A$1:$A$31;0)+1;2)&":B31")<>0;ZEILE(INDIREKT(ADRESSE(VERGLEICH(C2;$A$1:$A$31;0)+1;2)&":B31"))))))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4

Gruß

Edgar


  

Betrifft: @ Edgar von: Jockel
Geschrieben am: 08.01.2010 21:17:10

hi, du weißt ja sicher, wofür das gut sein soll!?!


cu jörg


  

Betrifft: AW: @ Edgar von: BoskoBiati
Geschrieben am: 08.01.2010 21:49:51

Hallo Jörg,

ich habe es mir fast gedacht. Allerdings ist diese Aufgabe fast noch einfacher gestrickt.

Gruß

Edgar


  

Betrifft: AW: @ Edgar von: Jockel
Geschrieben am: 08.01.2010 23:00:32

hi Edgar, um nicht mehr oder weniger ging es dort, du hattest geschrieben der rest wäre simpel... ich bevorzuge zur zeit die variante hier mit einer hilfsspalte von Timo - bei mir wären es dann zwei. warum? weil die formeln, dann transparenter, sehr viel einfacher (trotzdem genial) und nachvollzierberer sind... ich habe sie an dem "original" getestet und es passt.
aber ich teste die variante von Daniel auch noch, weil auch sie in meiner beispieldatei fluffig ist und passt..., aber das kann ein kleines bisschen dauern...

cu jörg


Beiträge aus den Excel-Beispielen zum Thema "daten in abhängigkeit ihrer häufigkeit..."