Supportnet / Forum / Tabellenkalkulation
Matrix Analyse
Frage
Hallo Zusammen,
Hoffe das ist nicht allzu schwierig. Ich habe eine Tabelle die ca. so aussieht.
S1 S2 S3 S4 S5 S6
Z1
Z2 blau blau1 blau2
Z3 gelb gelb1 gelb2
Z4 gru gru1 gru2
Z5 Name1 Name2 Name3 x
Z6 Namea Nameb Namec x
Z7 Named Namef Nameg x
Z8 Nameh Namei Namej x
.
.
.
.
So, Ziel ist es, dass alle Zeilen abgearbeitet werden und falls ein x vorhanden ist die in einem neuen Sheet
ein Zeile entsteht mir folgedem Inhalt
S1 S2 S3 S4 S5 S6
Name1 Name2 Name3 blau gelb gru
Namea Nameb Namec blau1 gelb1 gru1
etc..
Ich weiss ich muss da Werte in Variablen schreiben aber irgednwie hab ich gerade einen Hänger. Für Tips wäre ich sehr dankbar.
Danke und Gruss
Marco
Hier nocheinmal das ganze als HTML. zur besseren Übersicht...
[code]
<html>
<head>
<title></title>
</head>
<body>
<div class="Section1">
<p class="MsoNormal">Hallo Zusammen,</p>
<p class="MsoNormal"></p>
<p class="MsoNormal">Hoffe das ist nicht allzu schwierig. Ich habe eine Tabelle die ca. so aussieht.</p>
<p class="MsoNormal">
<span lang="EN-GB">S1 S2 S3 S4 S5 S6</span></p>
<p class="MsoNormal">
<span lang="EN-GB">Z1</span></p>
<p class="MsoNormal">
<span lang="EN-GB">Z2 blau blau1 blau2</span></p>
<p class="MsoNormal">Z3 gelb gelb1 gelb2</p>
<p class="MsoNormal">Z4 gru gru1 gru2</p>
<p class="MsoNormal">Z5 Name1 Name2 Name3 x</p>
<p class="MsoNormal">Z6 Namea Nameb Namec x</p>
<p class="MsoNormal">Z7 Named Namef Nameg x </p>
<p class="MsoNormal">Z8 Nameh Namei Namej x</p>
<p class="MsoNormal">So, Ziel ist es, dass alle Zeilen abgearbeitet werden und falls ein x vorhanden ist die in einem neuen Sheet </p>
<p class="MsoNormal">ein Zeile entsteht mir folgedem Inhalt</p>
<p class="MsoNormal">
<span lang="EN-GB">S1 S2 S3 S4 S5 S6</span></p>
<p class="MsoNormal">
<span lang="EN-GB"> Name1 Name2 Name3 blau gelb gru</span></p>
<p class="MsoNormal">
<span lang="EN-GB"> </span>Namea Nameb Namec blau1 gelb1 gru1</p>
<p class="MsoNormal">etc..</p>
<p class="MsoNormal"></p>
<p class="MsoNormal">Ich weiss ich muss da Werte in Variablen schreiben aber irgednwie hab ich gerade einen Hänger. Für Tips wäre ich sehr dankbar.</p>
<p class="MsoNormal"></p>
<p class="MsoNormal">Danke und Gruss</p>
<p class="MsoNormal">Marco</p></div>
</body>
</html>
[/code]
Antwort 1 von Event
Hallo
So richtig schlau machst Du uns nicht!
Wär besser gewesen Du hättest den Xml-Code Deiner Tabelle gepostet.
Sollte es bei etc.. etwa so weitergehen?
Named Namef Nameg blau2 gelb2 gru2 ...????
Ich Rätsle...und was soll dann hinter
Nameh Namei Namej
stehen ???
Gruß
So richtig schlau machst Du uns nicht!
Wär besser gewesen Du hättest den Xml-Code Deiner Tabelle gepostet.
Sollte es bei etc.. etwa so weitergehen?
Named Namef Nameg blau2 gelb2 gru2 ...????
Ich Rätsle...und was soll dann hinter
Nameh Namei Namej
stehen ???
Gruß
Antwort 2 von Nzer_de
Ja ich weiss.....war nicht gerade übersichtlich aber besser hab ich es da nicht hinbekommen. Habs jetzt selbst herausgefunden wie es geht. Hier mein Newbie Code:
Sub Matrix()
Dim Zaehler1 As Long, MaxRow As Long, MaxCol As Integer, Zaehler2 As Long
Dim VarWert1 As String, VarWert2 As String, VarKombi As String
Dim zeile As Long
zeile = 500 ´Starzeile festlegen
If IsEmpty(Cells(65536, ActiveCell.Column)) _
Then Cells(65536, ActiveCell.Column).End(xlUp).Select _
Else Cells(65536, ActiveCell.Column).Select
MaxCol = (ActiveCell.Column)
MaxRow = (ActiveCell.Row)
MaxRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row ´letzen gefüllte Zelle in Spalte A finden
´MaxCol = Selection.End(xlToRight).Column ´letzen gefüllte Zelle in Zeile 3 finden
MaxCol = 31 ´ Anzahl der Spalten angeben
For Zaehler2 = 10 To MaxCol ´MaxCol´mein Daten Stehen in Spalte 10
For Zaehler1 = 6 To MaxRow ´meine Daten beginnen in Zeile 6
If Cells(Zaehler1, Zaehler2).Value = "x" Then
VarWert2 = Cells(Zaehler1, 1) & ";" & Cells(Zaehler1, 2) & ";" & Cells(Zaehler1, 3) & ";" & Cells(Zaehler1, 4) & ";" & Cells(3, Zaehler2) & ";" & Cells(4, Zaehler2) & ";" & Cells(5, Zaehler2) ´Berechtigungen einlesen
End If
If VarWert2 = "" Then
zeile = zeile - 1
End If
If VarWert2 <> "" Then
Cells(zeile, MaxCol + 1) = VarWert2 ´Inhalt der Sammel-Variablen in Zelle schreiben
VarWert2 = ""
End If
zeile = zeile + 1 ´Zeilenzahl fürs nächste Schreiben erhöhen
Next Zaehler1
Next Zaehler2
´ Kopieren des Ergebnisses in Sheet1
Range("AF500").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Sheets("Sheet1").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Columns("A:A").Select
Range("A3").Activate
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1)), TrailingMinusNumbers:=True
Columns("A:G").Select
Range("A3").Activate
Columns("A:G").EntireColumn.AutoFit
Range("A1").Select
´Sortieren nach Name
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Trotzdem Danke. Dieses Forum ist wikklich gut
Sub Matrix()
Dim Zaehler1 As Long, MaxRow As Long, MaxCol As Integer, Zaehler2 As Long
Dim VarWert1 As String, VarWert2 As String, VarKombi As String
Dim zeile As Long
zeile = 500 ´Starzeile festlegen
If IsEmpty(Cells(65536, ActiveCell.Column)) _
Then Cells(65536, ActiveCell.Column).End(xlUp).Select _
Else Cells(65536, ActiveCell.Column).Select
MaxCol = (ActiveCell.Column)
MaxRow = (ActiveCell.Row)
MaxRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row ´letzen gefüllte Zelle in Spalte A finden
´MaxCol = Selection.End(xlToRight).Column ´letzen gefüllte Zelle in Zeile 3 finden
MaxCol = 31 ´ Anzahl der Spalten angeben
For Zaehler2 = 10 To MaxCol ´MaxCol´mein Daten Stehen in Spalte 10
For Zaehler1 = 6 To MaxRow ´meine Daten beginnen in Zeile 6
If Cells(Zaehler1, Zaehler2).Value = "x" Then
VarWert2 = Cells(Zaehler1, 1) & ";" & Cells(Zaehler1, 2) & ";" & Cells(Zaehler1, 3) & ";" & Cells(Zaehler1, 4) & ";" & Cells(3, Zaehler2) & ";" & Cells(4, Zaehler2) & ";" & Cells(5, Zaehler2) ´Berechtigungen einlesen
End If
If VarWert2 = "" Then
zeile = zeile - 1
End If
If VarWert2 <> "" Then
Cells(zeile, MaxCol + 1) = VarWert2 ´Inhalt der Sammel-Variablen in Zelle schreiben
VarWert2 = ""
End If
zeile = zeile + 1 ´Zeilenzahl fürs nächste Schreiben erhöhen
Next Zaehler1
Next Zaehler2
´ Kopieren des Ergebnisses in Sheet1
Range("AF500").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Sheets("Sheet1").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Columns("A:A").Select
Range("A3").Activate
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1)), TrailingMinusNumbers:=True
Columns("A:G").Select
Range("A3").Activate
Columns("A:G").EntireColumn.AutoFit
Range("A1").Select
´Sortieren nach Name
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Trotzdem Danke. Dieses Forum ist wikklich gut

