Matrix auf Basis Tabelle füllen

Hallo zusammen,

ich habe ein banales Problem und komme irgendwie gedanklich nicht weiter.
Die Ausgangssituation ist eine Tabelle mit Werten auf deren Basis eine Matrix zu füllen ist.
BSP:

1 10 20
2 20 10

Das heißt, in die Matrix wird eine „1“ in das Feld 10:20 geschrieben und eine „2“ in das Feld 20:10.

Über Hilfsfelder (Feld 10:20 ist beispielsweise F16, 20:10 G17 usw.) konte ich eine Funktion realisieren, die mir recht einfach die Matrix füllt.
Hier mal mein Code:

Sub Matrix_füllen()
’ Matrix_füllen-Makro
’ Tastenkombination: Strg+y
Dim AE As Integer, SZ As Integer, zelle1 As String, zelle2 As String, Zeile As Integer, Spalte As Integer, myarray As String

'Inhalte Matrix löschen
Range(„F12:K17“).Select
Selection.ClearContents

For AE = 2 To 9
zelle1 = Cells(AE, 5) 'Zelle E2 und ff.
For SZ = 2 To 37
zelle2 = Cells(SZ, 13) 'Zelle M2 und ff.
If zelle1 = zelle2 Then
Zeile = Cells(SZ, 14)
Spalte = Cells(SZ, 15)
Cells(Zeile, Spalte) = Cells(AE, 1)
End If
Next SZ
Next AE
End Sub

Jetzt habe ich aber das Problem, dass es durchaus möglich ist, dass Felder übereinstimmen.
Beispiel:
1 10 20
2 10 20

Wie realsisiere ich jetzt, das in das Feld der Matrix „1,2“ geschrieben wird? Diverse Versuche führten nicht zu einem Erfolg.
Vielleicht hat hier jemand eine Idee?

Cells(Zeile, Spalte) = Cells(Zeile, Spalte) & „,“ & Cells(AE, 1)

oder so ähnlich ?

Gruß

Klaus

Damit schreibt er ja bloß zweimal das gleiche in das Feld.

Das Problem an meinem Code ist ja, dass er den Inhalt des Feldes wieder überschreibt.
In meinem zweiten Beispiel würde dann anstelle „1,2“ einfach nur eine 2 stehen, da er die „1“ wieder überschreibt. Aber ich krieg das von der Abfolge der Schleife nicht hin, dass alle Felder abgeglichen werden und wenn Übereinstimmungen sind, einen String gefüllt wird, der dann auch noch im richtigen Feld ausgegeben wird.

Hi Petra,

ich hätte wie Klaus sowas empfohlen:
Cells(Zeile, Spalte) = String((Cells(Zeile, Spalte) „“) * -1, „,“) & Cells(AE, 1)

aber scheinbar ist das nicht die Lösung. Dein Code ist kurz, aber zum Verstehen langt kein kurzes Überfliegen, zumindest mir nicht.

Apropos, wo ist eigentlich Rainer? Verbotenerweise Urlaub, unabgemeldet nicht da oder was? Tsts :smile:))

Bevor ich mir den Code genauer anschaue, streiche Select und Selection und mache eine Zeile aus beiden Zeilen.
Benutze bitte beim Code posten den pre-Tag, wird unterhalb des Eingabefensters erläutert wie das geht.

Gruß
Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reinhard,

Apropos, wo ist eigentlich Rainer? Verbotenerweise Urlaub,
unabgemeldet nicht da oder was? Tsts :smile:))

ne, ne! Der ist hier und liest mit. Ich habe nur das Problem nicht verstanden und es geht ja wohl um VBA, da kenne ich mich doch nicht aus. :frowning:

Gruß, Rainer

Hi Petra,
ich sehe das auch wie Klaus und hätte das Gleiche gesagt.

In deinem Beispiel sieht man 3 Spalten, in deinem Code involvierst du 5-7 Spalten, je nach Inhalt der Zellen in Spalte N und O.
Noch dazu mit unterschiedlichen Zeilenanzahlen in den Spalten, die mich noch mehr verwirren.

Erstelle mal bitte eine Datei, im ersten Blatt sind die Ursprungsdaten, im zweiten wie es nach einem makro aussehen soll, das Ergebnis/Matrix und lade sie irgendwo hoch, www.hostarea.de o.ä.
Dazu noch eine andere Formulierung was du eigentlich wünscht.

Gruß
Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo alle zusammen,

vielen Dank für eure Mühe. Es tut mir leid, dass ich mich nicht verständlich ausgedrückt habe und in Zukunft nutze ich den pre-Tag :wink:

Ich habe die Datei jetzt mal hochgeladen:
http://www.hostarea.de/server-10/Oktober-b159cbc834.xls

Dort seht ihr oben links die Ausgangstabelle und unten eine „Matrix“ die gefüllt wird auf Basis der Angaben in der Ausgangstabelle. Die restlichen Zahlen habe ich nur hilfsweise eingefügt. Ich weiß, das ist nicht gerade eine professionelle Lösung aber ich bin noch Newbie, also nicht lachen! :smile:

Mein Problem ist jetzt, dass meine simple Lösung nicht dafür geeignet ist, wenn in der Ausgangstabelle für zwei Risiken die gleiche Eintrittswahrscheinlichkeit und Ausmaß angegeben werden. Dann wird nur der letzte Wert in der Matrix ausgegeben und alles andere wieder überschrieben. Meine Frage ist nun, wie fange ich dieses Problem auf. Ich habe schon mit einem Array rumexperimentiert, komme aber leider nicht zu einer Lösung.

Ich habe die Datei jetzt mal hochgeladen:
http://www.hostarea.de/server-10/Oktober-b159cbc834.xls

Dort seht ihr oben links die Ausgangstabelle und unten eine
„Matrix“ die gefüllt wird auf Basis der Angaben in der
Ausgangstabelle. Die restlichen Zahlen habe ich nur hilfsweise
eingefügt.

Hi Petra/Manuela,
deine Tabelle sieht so aus:

A B C D 
 Risiko Ausmaß EW
1 Risiko 1 10 20
2 Risiko 2 10 50
3 Risiko 3 20 50
4 Risiko 4 20 50
5 Risiko 5 20 50
6 Risiko 6 30 50
7 Risiko 7 20 50
8 Risiko 8 20 50

Diese Ergebnismatrix:

 E F G H I J K
12 E 6 
13 5 2 3,4,5,7,8 6 
14 4 
15 3 
16 2 1 
17 1 
18 1 2 3 4 5 6
19 A

erreicht man mit diesem Code:

Option Explicit
'
Sub tt()
Dim Zei As Long, UrZei, UrSpa
Dim Z, S
UrZei = 18
UrSpa = 5
With Worksheets("Tabelle1")
 .Activate
 .Range("F12:K17").ClearContents
 For Zei = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
 Z = UrZei - .Cells(Zei, 4) / 10
 S = UrSpa + .Cells(Zei, 3) / 10
 If .Cells(Z, S) "" Then .Cells(Z, S) = .Cells(Z, S) & ","
 .Cells(Z, S) = .Cells(Z, S) & .Cells(Zei, 1)
 Next Zei
End With
End Sub

Gruß
Reinhard

Hallo Reinhard,

vielen vielen Dank für deine Hilfe, das klappt super.

Und nochmal ein dickes Sorry an Klaus, hatte deinen Eintrag in dem Zusammenhang völlig anders verstanden. Jetzt ist mir klar, dass du auf´s Gleiche hinaus wolltest.

Danke an alle :smile:

… ist schon recht
schön zu wissen dass ich nicht immer alles verkehrt mache …
dass dann immer ein komma (auch bei nur einem eintrag) stehen würde daran habe ich auch nicht gedacht …