Thema Datum  Von Nutzer Rating
Antwort
30.12.2012 21:32:41 timi
Solved
Blau Dringend Hilfe mit der Umformatierung der Daten
31.12.2012 19:05:29 Trägheit
NotSolved
01.01.2013 20:33:35 Gast42162
NotSolved
01.01.2013 21:02:54 Gast47955
NotSolved
01.01.2013 21:20:56 Gast86138
NotSolved
02.01.2013 01:15:50 timi
NotSolved
02.01.2013 11:31:16 Trägheit
NotSolved
02.01.2013 23:14:17 timi
NotSolved
02.01.2013 23:20:59 timi
NotSolved
03.01.2013 14:02:37 Gast6953
NotSolved
03.01.2013 15:01:58 timi
NotSolved
03.01.2013 14:57:02 Trägheit
NotSolved
03.01.2013 15:10:18 timi
NotSolved
03.01.2013 15:29:29 Gast38708
NotSolved
03.01.2013 15:39:36 timi
NotSolved
03.01.2013 16:09:25 Gast87080
NotSolved
03.01.2013 16:28:22 timi
NotSolved
03.01.2013 22:16:00 Trägheit
NotSolved
03.01.2013 23:50:02 timi
NotSolved
04.01.2013 14:35:53 Gast69606
NotSolved
04.01.2013 15:13:57 timi
NotSolved
04.01.2013 18:47:41 Trägheit
NotSolved
04.01.2013 19:17:00 timi
NotSolved
05.01.2013 06:47:18 Trägheit
Solved
05.01.2013 11:03:27 timi
NotSolved
05.01.2013 18:05:58 Trägheit
NotSolved
05.01.2013 18:22:01 timi
NotSolved
05.01.2013 13:43:31 alex
NotSolved
05.01.2013 20:46:23 Trägheit
NotSolved
06.01.2013 00:59:12 alex
NotSolved
06.01.2013 15:12:10 Gast47772
NotSolved
06.01.2013 15:45:40 alex
NotSolved
07.01.2013 19:06:01 Gast50417
NotSolved
03.01.2013 23:56:30 timi
NotSolved

Ansicht des Beitrags:
Von:
Trägheit
Datum:
31.12.2012 19:05:29
Views:
1273
Rating: Antwort:
  Ja
Thema:
Dringend Hilfe mit der Umformatierung der Daten

Hallo,

 

ich habe mal etwas vorbereitet, hoffe es trifft die Problematik. Als Ziel für die transponierten Daten wird hier ein eigenes Arbeitsblatt gewünscht, kann man natürlich noch in 'Range' abändern.

Option Explicit

Sub TestIt()
  
  Dim n&
  
  n = transpRecordsets(Source:=Worksheets(1), _
                       Destination:=Worksheets(2))
  
  If n > 0 Then
    Call MsgBox("Es wurden " & IIf(n = 1, n & " Datensatz", n & " Datensätze") & " kopiert.", _
                vbInformation)
  Else
    Call MsgBox("Keine Datensätze vorhanden/gefunden.", _
                vbExclamation)
  End If
  
End Sub

Public Function transpRecordsets(Source As Excel.Worksheet, Destination As Excel.Worksheet) As Long
  
  Dim rng           As Excel.Range
  Dim rngRS         As Excel.Range
  Dim bRecordset    As Boolean
  Dim bEntry        As Boolean
  Dim bCopyHeader   As Boolean
  Dim rid&, n&
  
  Set rng = Source.Range("B2") 'Startpunkt/-zelle
  bCopyHeader = True  'Kopfzeile soll mitkopiert werden (wenn möglich)
  rid = 2             'abs. Zeilenindex für Beginn erster Datensatz (Kopfzeile ist damit: rid-1)
  
  'erster Datensatz vorhanden?
  bRecordset = Len(Trim(rng.Text)) > 0
  While bRecordset
    
    'die Einträge des Datensatzes durchwandern
    'und in rngRS "merken"
    Set rngRS = Nothing
    'ist ein Eintrag vorhanden?
    bEntry = Len(Trim(rng.Offset(ColumnOffset:=1).Text)) > 0
    While bEntry
      
      'Eintrag dem Datensatz zuordnen
      ' Ein Eintrag besteht aus einem Bezeichner
      ' und einem Wert (d.h. umfasst 2 Spalten)
      If Not rngRS Is Nothing Then
        Set rngRS = Union(rng.Offset(ColumnOffset:=1).Resize(ColumnSize:=2), _
                          rngRS)
      Else
        Set rngRS = rng.Offset(ColumnOffset:=1).Resize(ColumnSize:=2)
      End If
      
      'nächster Eintrag
      Set rng = rng.Offset(RowOffset:=1)
      'ist ein Eintrag vorhanden?
      bEntry = Len(Trim(rng.Offset(ColumnOffset:=1).Text)) > 0
    Wend
    
    If Not rngRS Is Nothing Then
    'an Zielort kopieren
    '(es wird hier davon ausgegangen, dass die Anzahl
    ' und Reihenfolge der Variablen immer die gleiche ist)
      
      If bCopyHeader Then
        bCopyHeader = False
        If rid > 1 Then 'Platz für Kopfzeile vorhanden?
          'Kopfzeile (einmalig) kopieren (transponiert)
          rngRS.Columns(1).Copy
          Destination.Rows(rid - 1).PasteSpecial xlPasteValues, Transpose:=True
        End If
      End If
      
      'Datensatz kopieren (transponiert)
      rngRS.Columns(2).Copy
      Destination.Rows(rid).PasteSpecial xlPasteValues, Transpose:=True
      
      'den animierten Kopierrahmen deaktivieren
      Application.CutCopyMode = False
      
      'Zeile für nächsten Datensatz
      rid = rid + 1
      'Anzahl der kopierten Datensätze
      n = n + 1
    End If
    
    'zwischen zwei Datensätzen gibt es noch eine leere Zeile
    'die hiermit übergangen wird
    Set rng = rng.Offset(RowOffset:=1)
    'ist ein weiterer Datensatz vorhanden?
    bRecordset = Len(Trim(rng.Text)) > 0
  Wend
  
  'Anzahl der kopierten Datensätze zurückgeben
  transpRecordsets = n
  
End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
30.12.2012 21:32:41 timi
Solved
Blau Dringend Hilfe mit der Umformatierung der Daten
31.12.2012 19:05:29 Trägheit
NotSolved
01.01.2013 20:33:35 Gast42162
NotSolved
01.01.2013 21:02:54 Gast47955
NotSolved
01.01.2013 21:20:56 Gast86138
NotSolved
02.01.2013 01:15:50 timi
NotSolved
02.01.2013 11:31:16 Trägheit
NotSolved
02.01.2013 23:14:17 timi
NotSolved
02.01.2013 23:20:59 timi
NotSolved
03.01.2013 14:02:37 Gast6953
NotSolved
03.01.2013 15:01:58 timi
NotSolved
03.01.2013 14:57:02 Trägheit
NotSolved
03.01.2013 15:10:18 timi
NotSolved
03.01.2013 15:29:29 Gast38708
NotSolved
03.01.2013 15:39:36 timi
NotSolved
03.01.2013 16:09:25 Gast87080
NotSolved
03.01.2013 16:28:22 timi
NotSolved
03.01.2013 22:16:00 Trägheit
NotSolved
03.01.2013 23:50:02 timi
NotSolved
04.01.2013 14:35:53 Gast69606
NotSolved
04.01.2013 15:13:57 timi
NotSolved
04.01.2013 18:47:41 Trägheit
NotSolved
04.01.2013 19:17:00 timi
NotSolved
05.01.2013 06:47:18 Trägheit
Solved
05.01.2013 11:03:27 timi
NotSolved
05.01.2013 18:05:58 Trägheit
NotSolved
05.01.2013 18:22:01 timi
NotSolved
05.01.2013 13:43:31 alex
NotSolved
05.01.2013 20:46:23 Trägheit
NotSolved
06.01.2013 00:59:12 alex
NotSolved
06.01.2013 15:12:10 Gast47772
NotSolved
06.01.2013 15:45:40 alex
NotSolved
07.01.2013 19:06:01 Gast50417
NotSolved
03.01.2013 23:56:30 timi
NotSolved