Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

vier Spalten in vier NEUE Spalten mischen
#1
Hola los Todos!

Ich habe vier Spalten (A1, B1, C1 und D1) und ein paar hundert Zeilen mit Inhaltsblöcken nach dem Schema:


Code:
A1 <p>Inhaltsblock 1a</p><p>Inhaltsblock 1b</p><p>Inhaltsblock 1c usw.</p>
B1 <p>Inhaltsblock 2a</p><p>Inhaltsblock 2b</p><p>Inhaltsblock 2c usw.</p>
C1 <p>Inhaltsblock 3a</p><p>Inhaltsblock 3b</p><p>Inhaltsblock 3c usw.</p>
D1 <p>Inhaltsblock 4a</p><p>Inhaltsblock 4b</p><p>Inhaltsblock 4c usw.</p>


Manche Inhaltsblöcke haben nur ein Wort, manche 10 Wörter oder mehr.

Kein Inhaltsblock ist innerhalb der 4 Zeile(n) A1-D1, bzw. A2-D2 usw. mehrfach vorhanden.

Manche Spalten haben nur EINEN Inhaltsblock, der umfangreichste 120! Inhaltsblöcke

Ich bräuchte eine Lösung die pro Spalte A-D nur einen zufälligen Teil der Inhaltsblöcke (inklusive der p tags) auswählt und in neue Spalten E-H schreibt.

Also, wenn z.B. in A1 100 Inhaltsblöcke stehen, wählt die Lösung 10 zufällige Inhaltsblöcke raus und schreibt sie in Spalte E1.
Wenn z.B. in B1 50 Inhaltsblöcke stehen, wählt die Lösung 10 zufällige Inhaltsblöcke raus und schreibt sie in Spalte F1.
Wenn z.B. in C1 10 Inhaltsblöcke stehen, übernimmt die Lösung diese 10 Inhaltsblöcke und schreibt sie in Spalte G1.
Und wenn in D1 nur EIN Inhaltsblock steht, übernimmt die Lösung diesen Inhaltsblock und schreibt ihn in Spalte H1.

Die Lösung soll nie mehr als 10 zufällige Inhaltsblöcke pro Spalte aus den möglichen x Inhaltsböcken pro Spalte auswählen.

Wenn es weniger als 10 Inhaltsblöcke pro Spalte sind werden diese (weniger/gleich 10) einfach in die neue Spalte übernommen.

Also 1-10 werden wie vorhanden übernommen und AB 11 werden 10 zufällige ausgewählt.

Anbei eine Testliste mit unter/über 10 Einträgen.

In Spalte A sind immer weniger wie 10 Einträge, in Spalte B, C und D immer mehr wie 10 Einträge.

Danke und Gruss

Peter


Angehängte Dateien
.xlsx   vier Spalten in vier NEUE Spalten mischen.xlsx (Größe: 9,55 KB / Downloads: 4)
Antworten Top
#2
Hallo Peter,

das, was du dir hier vorstellst, geht mit Formeln gar nicht und ob hier ein Makro eine vertretbare Lösung zaubert, können dir nur die VBA-Spezialisten sagen. Aber du könntest uns sagen, was du damit eigentlich bezweckst, vllt. hat einer der Helfer eine bessere Idee.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
Hi Peter,

was immer du da machst???
Hoffe der Code tut das was du erwartest.

Code in ein allgemeines Modul.
Code:
Public Function Neue10(rng As Range)
Dim Werte As Variant, m As Long, Werte2, k, objAL As Object, objALSort As Object

  Werte = Split(Replace(rng.Value2, "><", ">><<"), "><")
  m = UBound(Werte, 1) + 1

   If m < 11 Then
     Neue10 = Join(Werte, "")
   Else
     Set objAL = CreateObject("System.Collections.Arraylist")
     Set objALSort = CreateObject("System.Collections.Arraylist")
     ReDim Werte2(1 To 10)
     
     Randomize
     Do
       k = Rnd
       If Not objAL.Contains(k) Then
         objAL.Add (k)
         objALSort.Add (k)
       End If
     Loop While m > objAL.Count
     objALSort.Sort
    
     For m = 1 To 10
        Werte2(m) = Werte(objAL.IndexOf(objALSort(m - 1), 0))
     Next m
     
     Neue10 = Join(Werte2, "")
     
     Set objAL = Nothing
     Set objALSort = Nothing
   End If
End Function

Dann in E1 die Formel     =Neue10(A1)     ->Zelle E1 nach rechts und unten kopieren

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • PeterN
Antworten Top
#4
Der Wahnsinn!

Ich wusste der Elex kriegt das hin.

Super! Klasse! Danke! (mehr als 10 mal)

Gruss

Peter
Antworten Top
#5
Wie besprochen

Danke

Peter


Angehängte Dateien
.xlsm   4 aus 4 (5 statt 10).xlsm (Größe: 25,15 KB / Downloads: 3)
Antworten Top
#6
Hi

Den Code in das allgemeine Modul verschieben. Unter Neue10.

Gruß Elex
Antworten Top
#7
Hi Elex!

Verstehe nicht was Du meinst.

Schick mir doch mal bitte die funktionierende Liste 5 statt 10.

Dann sehe ich bestimmt was Du gemeint hast.

Danke

Peter
Antworten Top
#8
Hi,

oder wie wäre es mit einer Videoanleitung ;)
https://www.youtube.com/watch?v=AYpEuHBZmFU
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#9
Hi
 
Öffne in deiner letzten Bsp-Datei den VBA Editor.
In der Projektübersicht siehst du derzeit 2 Ordner(Microsoft Excel Objekte und Module.
Beide enthalten Module.
Microsoft Excel Objekte:   -DieseArbeitsmappe
                                        -Tabelle1(Tabelle1)
Module:                            -Modul1
 
Doppelklick auf Tabelle1(Tabelle1) -> den Code Neue5 von hier nach Modul1 verschieben unter den Code Neue10.
evtl. noch F9 drücken für Neuberechnung des Blattes.

 
Hier mal was zum lesen. Nur dass bei dir das Modul schon da ist.
http://www.j-hennekes.de/1033846.htm
 
Gruß Elex
Antworten Top
#10
Hi Chris!

Danke für die Anleitung.

Sieht genauso aus wie vorher.

Hast Du noch eine Anleitung wie man #NAME? in E1-H1 wieder durch Werte ersetzen kann?

Gruss

Peter
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste