Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Matrix auslesen/auswerten
21.07.2007 14:44:49
Michael
Hallo,
ich möchte eine Matrix in Excel auswerten. z. B.:
&nbsp &nbsp A&nbsp&nbsp B &nbsp&nbsp C &nbsp&nbsp D
A &nbsp / &nbsp x &nbsp&nbsp &nbsp &nbsp&nbsp &nbsp x
B &nbsp x &nbsp /
C &nbsp &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp /
D &nbsp x &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp /
Es handelt sich hierbei um Kommunikationspartner. überall wo ein x drin ist können die Partner miteinander reden. Der gleiche Partner kann nicht mit sich selbst reden, deswegen die "/".
Daraus soll später eine Liste im Excel werden
A kann mit B und D reden und umgekehrt. Die Liste soll ungefähr so aussehen:
Kommunikationspartner A:
B
D
Kommunikationspartner B:
A
Kommunikationspartner D:
A
Also wenn ich eine Liste mit Kommunikationspartnern von A brauche sollen die aufgelistet werden.
Wie mach ich das am besten? Geht das noch mit einer Formel oder brauche ich da VBA?
Danke und Gruß

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Matrix auslesen/auswerten
21.07.2007 15:26:08
Christian
Hallo Michael,
als Ansatz ( Formeln nach rechts kopieren)
Tabelle2

 ABCDEFGHIJ
1          
2 ABCD     
3A/x x ABD 
4Bx/   BA  
5C  /  C   
6Dx  / DA  

Formeln der Tabelle
ZelleFormel
H3{=WENN(SPALTE(A1)>ZÄHLENWENN($B$3:$B$6;"x"); "";INDEX($A$3:$A$6;KKLEINSTE(WENN($B$3:$B$6="x";ZEILE($1:$4)); SPALTE(A1))))}
H4{=WENN(SPALTE(A1)>ZÄHLENWENN($C$3:$C$6;"x"); "";INDEX($A$3:$A$6;KKLEINSTE(WENN($C$3:$C$6="x";ZEILE($1:$4)); SPALTE(A1))))}
H5{=WENN(SPALTE(A1)>ZÄHLENWENN($D$3:$D$6;"x"); "";INDEX($A$3:$A$6;KKLEINSTE(WENN($D$3:$D$6="x";ZEILE($1:$4)); SPALTE(A1))))}
H6{=WENN(SPALTE(A1)>ZÄHLENWENN($E$3:$E$6;"x"); "";INDEX($A$3:$A$6;KKLEINSTE(WENN($E$3:$E$6="x";ZEILE($1:$4)); SPALTE(A1))))}
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
MfG Christian

Anzeige
AW: Matrix auslesen/auswerten Ergänzung
21.07.2007 15:40:00
Christian
Hallo Michael,
kleine Änderung, Formel in H3 einfach nach rechts und unten kopieren.
Tabelle2

 ABCDEFGHIJ
1          
2 ABCD     
3A/x x ABD 
4Bx/   BA  
5C  /  C   
6Dx  / DA  
7          

Formeln der Tabelle
ZelleFormel
H3{=WENN(SPALTE(A$1)>ZÄHLENWENN(BEREICH.VERSCHIEBEN($B$3:$B$6;;VERGLEICH($G3;$B$2:$E$2;0)-1); "x"); "";INDEX($A$3:$A$6;KKLEINSTE(WENN(BEREICH.VERSCHIEBEN($B$3:$B$6;;VERGLEICH($G3;$B$2:$E$2;0)-1)="x";ZEILE($1:$4)); SPALTE(A$1))))}
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
MfG Christian

Anzeige
AW: Matrix auslesen/auswerten
21.07.2007 15:48:00
Chaos
Servus,
ich hab einen kleinen VBA-Code geschrieben.
Hier eine Beispieldatei
https://www.herber.de/bbs/user/44317.xls
Die Spaltenanzahl in der 2.For-Schleife musst du eben entsprechend auf deine Matrix anpassen (hier jetzt bis 5 = E)
Gruß
Chaos

AW: Matrix auslesen/auswerten
24.07.2007 18:33:00
Michael
Der VBA Code ist genau was ich brauche.
Es müßte für meine Belange noch etwas optimiert werden.
Wo muß ich dran schrauben, damit er mir das Ergebnis in ein separates Tabellenblatt schreibt?
Noch besser wäre es, wenn es zei verschiedene Excel Dateien wären ( ein mit der Matrix und eine mit den Ergebnissen des VBA)
Besten Dank schon mal

Anzeige
AW: Matrix auslesen/auswerten
25.07.2007 08:10:00
Chaos
Servus,
hier der Code:
Die zieltabelle ist im Beispiel Sheets("Tabelle1")
Sub Partner1() Dim r As Integer, z As Integer, sp As Integer, r1 As Integer Dim n As String n = InputBox("Partner für ?") If n = "" Then Exit Sub End If r1 = Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(1, 0).Row r = Range("A65536").End(xlUp).Offset(0, 0).Row For z = 2 To r Step 1 If Cells(z, 1).Value = n Then For sp = 2 To 5 Step 1 If Cells(1, sp) n Then If Cells(z, sp).Value = "x" Then Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(1, 0).Value = Cells(1, sp). _ Value End If End If Next sp End If Next z If Sheets("Tabelle1").Range("A1").Value = "" Then Sheets("Tabelle1").Range("A1").Value = "Kommunikationspartner für " & n & ":" Else Sheets("Tabelle1").Activate Sheets("Tabelle1").Range("A" & r1).Select Selection.Insert Shift:=xlDown Selection.Insert Shift:=xlDown Sheets("Tabelle1").Range("A" & r1 + 1).Value = "Kommunikationspartner für " & n & ":" End If End Sub


Gruß
Chaos

Anzeige
AW: Matrix auslesen/auswerten
25.07.2007 09:23:12
Chaos
Ach so, wenn du in eine andere Datei kopieren willst, dann musst du es so abändern.

Sub Partner1()
Dim r As Integer, z As Integer, sp As Integer, r1 As Integer
Dim n As String, nam as String, nam1 As String
nam = ActiveWorkbook.Name
n = InputBox("Partner für ?")
If n = "" Then
Exit Sub
End If
Workbooks.Open Filename:= "C:\...Hier der Pfad der Zieldatei...xls"
nam1 = activeWorkbook.Name
r1 = Workbooks(nam1).Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(1, 0).Row
r = Workbooks(nam).Sheets("xy").Range("A65536").End(xlUp).Offset(0, 0).Row
With Workbooks(nam).Sheets("xy")
For z = 2 To r Step 1
If .Cells(z, 1).Value = n Then
For sp = 2 To 5 Step 1
If .Cells(1, sp)  n Then
If .Cells(z, sp).Value = "x" Then
Workbooks(nam1). Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(1, 0). _
Value = .Cells(1, sp). Value
End If
End If
Next sp
End If
Next z
End With
With Workbooks(nam1)
If .Sheets("Tabelle1").Range("A1").Value = "" Then
.Sheets("Tabelle1").Range("A1").Value = "Kommunikationspartner für " & n & ":"
Else
.Sheets("Tabelle1").Activate
.Sheets("Tabelle1").Range("A" & r1).Select
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
.Sheets("Tabelle1").Range("A" & r1 + 1).Value = "Kommunikationspartner für " & n & ":"
End If
ActiveWorkbook.Close
End With
End Sub


hab's nicht getestet, müsste aber gehen.
Gruß
Chaos

Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige