Clever-Excel-Forum

Normale Version: vba - viele matrixformeln ersetzen?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
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?
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
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!
Hallo Edgar,

schau mal ins Profil des TE.
Ich kann mir Deine Lösung deshalb auch nicht ansehen.
Hi,

dann wird es ohne Matrixformeln wohl eher nichts.


Eine Summenproduktformel reicht:



[attachment=9177]
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...
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
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
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)
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
Seiten: 1 2 3 4 5