Microsoft Excel

Herbers Excel/VBA-Archiv

Erstellung Kreuztabelle

Betrifft: Erstellung Kreuztabelle von: Cello
Geschrieben am: 23.09.2014 13:31:23

Hallo zusammen,

ich habe ein Problem bei der Aufstellung einer Kreuztabelle.

Ich habe eine Tabelle in der in der ersten Spalte eine Identifizierungsnummer (Ident) steht und in einer zweiten Spalte eine Orga-Nummer. Jetzt möchte ich gerne eine Kreuztabelle aufstellen, in der die vertikale Spalte aus den Orga-Nummern besteht und die horizontale aus den Identnummern. Immer wenn die Orga-Nummer zu der Identnummer gehört, soll in der Kreuztabelle eine 1 stehen. Ansonsten leer.

Es kann und soll auch sein, dass mehrere Orga-Nummer zu einer Identnummer gehören

Ein Beispiel ist anbei.

https://www.herber.de/bbs/user/92767.xlsx

Kann mir einer bei dem Thema helfen?

Vielen Dank

  

Betrifft: Pivot-Tabelle owT von: Rudi Maintaire
Geschrieben am: 23.09.2014 13:45:10




  

Betrifft: AW: Erstellung Kreuztabelle von: Hajo_Zi
Geschrieben am: 23.09.2014 13:59:47

Pivot ist wohl der bessere Ansatz.

Tabelle2

 ABCDEF
1Ident2113997111
237500000
31547Formeln teilweise in Zeile 1 nach Rechts und unten ziehen    

verwendete Formeln
Zelle Formel Bereich N/A
B2:F2=N(SUMMENPRODUKT((Tabelle1!$B$2:$B$2580=$A2)*(Tabelle1!$A$2:$A$2580=B$1))>0)  

Zahlenformate
Zelle Format Wert
B1 '0;; 2
C1 '0;; 11
D1 '0;; 39
E1 '0;; 97
F1 '0;; 111
B2 '0;; 0
C2 '0;; 0
D2 '0;; 0
E2 '0;; 0
F2 '0;; 0
Zellen mit Format Standard werden nicht dargestellt
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 18.15 einschl. 64 Bit


GrußformelHomepage


  

Betrifft: AW: Erstellung Kreuztabelle von: Cello
Geschrieben am: 23.09.2014 14:50:45

Vielen Dank!

Ich möchte die Pivot-Tabelle jetzt auswerten und untersuchen, welche Orga mit welcher Orga zusammen die selbe Ident-Nummer haben und dies auch in einer Kreuztabelle mit 1 oder "" darstellen. Sowohl die Vertikale als auch Horizontale soll dazu die Orga-Nummern haben und wenn sie die selbe Ident-Nummer haben, soll die Kreuz-Zelle eine 1 enthalten.

Jede Orga kann dabei mit mehreren Orgas die selbe Identnummer haben.
Darüber hinaus sollte der Schnittpunkt einer Orga, die ja in der vertikalen und horizontalen Achse stehen, möglichst auch leer.

Hat hierzu jemand eine Idee?

Besten Dank


  

Betrifft: AW: Erstellung Kreuztabelle von: Hajo_Zi
Geschrieben am: 23.09.2014 15:15:56

nach Deinem Beispiel ist
Waagerecht Ident
Senkrecht Orga
Werte Help

Gruß Hajo


  

Betrifft: AW: Erstellung Kreuztabelle von: Cello
Geschrieben am: 23.09.2014 15:19:32

Ja genau,

die beschriebene Pivot-Tabelle nutze ich jetzt als Hilfsmittel, um die Orga-Orga Beziehung, wie oben beschrieben, mit Hilfe einer zweiten Kreuzmatrix darzustellen.

Die Frage ist aber, wie stelle ich die zweite Kreuztabelle (Orga-Orga Beziehung) dar?

Als Aussage weiß ich nachher, welche Orga mit welchen weiteren Orgas eine Beziehung hat.


  

Betrifft: AW: Erstellung Kreuztabelle von: Hajo_Zi
Geschrieben am: 23.09.2014 15:21:49

dazu kann ich nichts schreiben, in der Datei steht die Orga in einer Spalte, da kann ich nicht sehen wie die einzelnen Zellen verknüpft sind.

Gruß Hajo


  

Betrifft: AW: Erstellung Kreuztabelle von: Cello
Geschrieben am: 23.09.2014 15:38:55

Zunächst einmal Danke Hajo für die Unterstützung!

Ich habe anbei ein Beispiel:

https://www.herber.de/bbs/user/92768.xlsx

In dem Bsp.Ergebnis steht schließlich, ob eine Orga mit einer anderen Orga eine Beziehung hat und mit welcher bzw. mit wie vielen.

Zusammenfassung:
Reiter Ausgangstabelle: Ist die Datenstruktur, die ich habe

Reiter Zw.Schritt Pivot: Stellt die Beziehung Orga zu Ident her

Reiter Bsp_Ergebnis: Stellt die Beziehung Orga zu anderen Orgas her

Vielen Dank!


  

Betrifft: AW: Erstellung Kreuztabelle von: Rudi Maintaire
Geschrieben am: 24.09.2014 11:45:04

Hallo,
also wenn A eine Beziehung mit C und D hat, und D eine mit F und G, dann hat A auch eine mit F und G sowie C mit F und G?
Geht imho nur per Code.

Sub cello()
  Dim arrTmp, objId As Object, objOrga As Object
  Dim arrDaten(), arrOrga, arrID
  Dim i As Long, j As Long, k As Long
  Dim XPOS As Long, YPOS As Long, x, y
  Set objId = CreateObject("scripting.dictionary")
  Set objOrga = CreateObject("scripting.dictionary")
  Range("A1").Sort key1:=Range("B2"), order1:=xlAscending, Header:=xlYes
  arrTmp = Cells(1, 1).CurrentRegion
  For i = 2 To UBound(arrTmp)
    If InStr(objId(arrTmp(i, 1)), arrTmp(i, 2)) = 0 Then
      objId(arrTmp(i, 1)) = objId(arrTmp(i, 1)) & "|" & arrTmp(i, 2)
    End If
    objOrga(arrTmp(i, 2)) = 0
  Next
  arrOrga = objOrga.keys
  ReDim arrDaten(1 To objOrga.Count + 1, 1 To objOrga.Count + 1)
  For i = 0 To UBound(arrOrga)
    arrDaten(i + 2, 1) = arrOrga(i)
    arrDaten(1, i + 2) = arrOrga(i)
  Next
  arrID = objId.items
  For i = 0 To UBound(arrID)
    arrTmp = Split(arrID(i), "|")
    For j = 1 To UBound(arrTmp) - 1
      If IsNumeric(arrTmp(j)) Then
        x = arrTmp(j) * 1
      Else
        x = arrTmp(j)
      End If
      XPOS = Application.Match(x, arrOrga, 0) + 1
      For k = j + 1 To UBound(arrTmp)
        If IsNumeric(arrTmp(k)) Then
          y = arrTmp(k) * 1
        Else
          y = arrTmp(k)
        End If
        YPOS = Application.Match(y, arrOrga, 0) + 1
        arrDaten(XPOS, YPOS) = "X"
        arrDaten(YPOS, XPOS) = "X"
      Next
    Next
  Next
  With Worksheets.Add
    .Cells(1, 1).Resize(UBound(arrDaten), UBound(arrDaten, 2)) = arrDaten
    .Rows(1).Orientation = 90
    .Columns.AutoFit
  End With
End Sub

Gruß
Rudi


 

Beiträge aus den Excel-Beispielen zum Thema "Erstellung Kreuztabelle"