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.

vba - viele matrixformeln ersetzen?
#11
Hallo Edgar,

wenn ich den TE richtig verstanden habe, dann müssten 300 Spalten und 6000 Zeilen mit Formeln gefüllt werden.
Meinst Du wirklich, egal wie "schlank" die Formel ist, dass man in der Mappe vernünftig arbeiten kann?
Gruß Atilla
Antworten Top
#12
besten Dank für die Datei.... nur mein Excel scheint kaputt... naja... wahrscheinlich bin ich eher kaputt... :16:

in der Voransicht des Explorers kann ich das wunderschön sehen... wenn ich die Datei mit Excel öffne sehe ich nichts mehr.
die Formeln stehen drin - aber das wars... zu sehen sind nur leere Felder...

wie geht denn sowas? hab ich denn jetzt schon was an den Augen?
ich glaub ich brauch langsam mal wieder Schlaf Wink
Antworten Top
#13
Hi atilla,


Ausgangslage:


Zitat:Auflistung von ca 6000 Zeilen
Liste besteht aus ca 300 verschiedenen "Teilen"


dürfte also auf maximal 300 Spalten mit Ø20 Zeilen kommen. Ist überschaubar!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#14
Hallo Edgar,

schau mal ins Profil des TE.
Ich kann mir Deine Lösung deshalb auch nicht ansehen.
Gruß Atilla
Antworten Top
#15
Hi,

dann wird es ohne Matrixformeln wohl eher nichts.


Eine Summenproduktformel reicht:




.xlsb   Spalten_untereinander_2.xlsb (Größe: 63,18 KB / Downloads: 3)
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#16
Nabend nochmal...
hab nun rumgestrickt und mich versucht...
die Formellösungen werden schwierig. Mein PC hüstelt ein wenig dabei...


Ich mein ich hab ja nun reichlich wenig Ahnung, aber ich überlege grad, wenn ich das Blatt vom Edgar nachbauen würde und dabei den Recorder an hätte, dann würde er doch die Formeln immer reproduzierbar mit schreiben.
Wenn man nun nach jedem Ergebnis die Werte nur wieder einfügt und dann die nächste Formel baut... ginge das nicht auch oder is die Idee dämlich?  :20:



Ich hab nun mal eine Beispielmappe mit den 6000x350 Einträgen erstellt. 

Dann hab ich das in einer anderen Tabelle so gefiltert wie ich das mit dem Autofilter machen würde und die Ergebnisse kopiert und in die Beispielmappe wieder eingefügt. (wenn man dem Autofilter erklären könnte, dass er von sich aus alle Werte die er findet einzeln durchackern soll würde das sogar gehen)
Ich habe es - es soll ja nur zur Ansicht sein wie es aussehen soll - bei 10 Einträgen dabei aber belassen. Wenn das hilfreich wäre würde ich den Rest aber auch noch stricken...

Diese Tabelle ist nun nicht wie bei der ersten, mit mehreren Blättern und hin und hergewurschtel - jetzt ist alles auf eine Seite reduziert. Vielleicht is das so alles was einfacher...?

Mappe hängt unten dran...


Angehängte Dateien
.xlsx   Pflanzen1.xlsx (Größe: 175,82 KB / Downloads: 6)
Antworten Top
#17
Hallo Klaus,

füge eine Blatt in Deine Mappe ein, die Du "Tabelle1" benennst.

Dann unten stehenden Code in ein allgemeines Modul einfügen, starten und die Ergebnisse in Tabelle1 anschauen.


Code:
Option Explicit

Sub transponieren()
 Dim i As Long, j As Long, k As Long
 Dim zZ As Long
 Dim lngZ As Long
 Dim feld
 Dim vntK
 Dim arr()
 
 Dim c As Object
 Set c = CreateObject("Scripting.Dictionary")
 With Sheets("Übersicht")
   lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
   feld = .Range("A2:C" & lngZ)
   For i = 1 To lngZ - 2
     If feld(i, 3) <> "" And IsNumeric(feld(i, 3)) Then
       vntK = feld(i, 1)
'        If InStr(c(vntK), feld(i, 3)) = 0 Then   'wenn wie bei OPA EDGAR keine Doppelten aus Spalte B aufgeführt werden sollen, dann das Hochkomma am Anfang der Zeile entfernen
         c(vntK) = c(vntK) & "#" & feld(i, 2)
'        End If                                   'wenn wie bei OPA EDGAR keine Doppelten aus Spalte B aufgeführt werden sollen, dann das Hochkomma am Anfang der Zeile entfernen
       zZ = Application.Max(zZ, UBound(Split(c(vntK), "#")))
     End If
   Next
   ReDim arr(c.Count - 1, (zZ - 1) * (c.Count - 1))
   For Each vntK In c.keys
     For j = 1 To UBound(Split(c(vntK), "#"))
       arr(k, j - 1) = Split(c(vntK), "#")(j)
       
     Next j
     k = k + 1
   Next vntK
 End With
   
 With Sheets("Tabelle1")   'Name der Zieltabelle
   .Cells.Clear
   .Range("A1").Resize(, c.Count) = c.keys
   .Range("A1").Offset(1, 0).Resize(zZ, c.Count) = Application.Transpose(arr)
 End With
End Sub
Gruß Atilla
Antworten Top
#18
Wooooowwwwww.... na halt mich doch.... ich werd ja verrückt.... ich brüte da seit kurz vor Weihnachten dran rum...  :16:
das ist .... ja.... genial.

...ich könnte rumspringen vor Freude...

Allerbesten Dank Smile
Antworten Top
#19
Hallo Klaus,

schön, dass es funktioniert hat.

Wenn Du möchtest, kann das Ganze auch bei jedem aktivieren der Tabelle1 laufen, so dass dort eventuelle Änderungen berücksichtigt werden.
Außerdem, würde ich die Spalten auch per Code anpassen, wenn nötig. (eine Zeile mehr Code)
Gruß Atilla
Antworten Top
#20
Guten Morgen Atilla,

vielen Dank für den Nachschlag.
Gern würd ich die Zeilen noch einfügen.
Wie lauten diese? Und an welche Stelle gehören sie?

Liebe Grüße
Klaus
Antworten Top


Gehe zu:


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