Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1216to1220
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
Inhaltsverzeichnis

welche Formel

welche Formel
Antje
Hallo!
Ich habe ein Problem und brauche dringend einen Rat. Ich habe mir aus einem Programme ein Excel-Sheet mit Daten ausgelesen. Das Sheet besteht aus 2000 Zeilen und 50 Spalten. In den Zeilen weden Konten und den Spalten Kostenstellen wiedergegeben. Je nach dem werden wenn Kosten anfallen Werte wiedergegeben.
Mein Problem ich möchte gern mit einer Formel die Anortnung ändern d.h. ich will im Prinzip nur noch 2 oder 3 Spalten haben. Nämlich alle Konten mit Kostenstellen in einer Spalte oder auch für jedes eine Spalte ist egal und den entsprechenden Wert dazu anzeigen lassen. Also alles fortlaufend untereinander. Wie kann ich das machen?
Danke für Eure Hilfe

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: welche Formel
04.06.2011 18:22:48
Josef

Hallo Antje,
aus deiner Beschreibung werde ich nicht schlau! Lade doch ein Beispiel hoch.

« Gruß Sepp »

AW: welche Formel
04.06.2011 18:48:06
Antje
Hab jetzt mal ein kleines beispiel hochgeladen
der obere Rahmen zeigt wie die datengrundlage ist und der untere wie ich es gern haben möchte

Die Datei https://www.herber.de/bbs/user/75166.xls wurde aus Datenschutzgründen gelöscht


Anzeige
AW: welche Formel
04.06.2011 19:11:23
Josef

Hallo Antje,
mit Formeln fällt mir dazu nichts ein, aber per VBA.
Kopiere den Code in ein allgemeines Modul, er bezieht sich immer auf das aktive Tabellenblatt!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Sub transposeData()
  Dim lngLast As Long, lngRow As Long, lngLastCol As Long, lngCol As Long
  Dim lngNewRows As Long, lngIndex As Long
  Dim vntNew() As Variant
  With ActiveSheet
    lngLast = Application.Max(3, .Cells(.Rows.Count, 1).End(xlUp).Row)
    lngLastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    lngNewRows = Application.CountA(.Range(.Cells(3, 2), .Cells(lngLast, lngLastCol)))
    Redim vntNew(1 To lngNewRows, 1 To 3)
    
    For lngRow = 3 To lngLast
      If Application.Count(.Range(.Cells(lngRow, 2), .Cells(lngRow, lngLastCol))) > 0 Then
        For lngCol = 2 To lngLastCol
          If .Cells(lngRow, lngCol) <> "" Then
            lngIndex = lngIndex + 1
            vntNew(lngIndex, 1) = .Cells(lngRow, 1)
            vntNew(lngIndex, 2) = .Cells(1, lngCol)
            vntNew(lngIndex, 3) = .Cells(lngRow, lngCol)
          End If
        Next
      End If
    Next
  End With
  If lngIndex > 0 Then
    Worksheets.Add after:=ActiveSheet
    With ActiveSheet
      .Cells(1, 1).Resize(lngNewRows, 3) = vntNew
      .Range("A1").CurrentRegion.Sort Key1:=.Range("A1"), Order1:=xlAscending, _
        Key2:=.Range("B1"), Order2:=xlAscending, Header:=xlNo
    End With
  End If
End Sub



« Gruß Sepp »

Anzeige
AW: welche Formel
04.06.2011 19:58:10
Antje
Danke kann ich bitte eine erklärung dazu bekommen was ich damit machen muss
und was die ganzen befehle bedeuten
kann damit leider nicht viel anfangen
AW: welche Formel
04.06.2011 20:33:11
Josef

Hallo Antje,
was du damit machen sollst, na den Code wie beschrieben in ein Modul einfügen und natürlich ausführen!
https://www.herber.de/bbs/user/75168.xls

« Gruß Sepp »

Anzeige
AW: welche Formel
04.06.2011 20:46:57
Antje
ja danke es funktioniert
kannst du mir noch sagen welche stellen in dem makro die zelle / zeile und spalte beschreiben an dem die suche beginnen soll
meine excel datei war ja nur ein beispiel und ich weiß jetzt nicht genau an welcher stelle die daten anfangen
aber die zeilen und spalten können beliebig lang sein? erkennt das das makro oder ist es auch begrenzt?
AW: welche Formel
04.06.2011 21:16:48
Josef

Hallo Antje,
im Allgemeinen erwarte ich, das eine Beispieltabelle vom Aufbau her dem Original entspricht, vor allem bei "VBA nein".
Ich hab dir drei Konstanten eingefügt mit denen du denCode einfach an deine Bedürfnisse anpassen kannst.
Und ja, die Größe des Datenbereiches wird vom Makro automatisch ermittelt.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Const clngFirstDataColumn As Long = 1 'Spalte mit den Kostenstellen
Const clngFirstDataRow As Long = 3 'Erste Zeile mit Daten
Const clngHeaderRow As Long = 1 'Zeile mit den Konten
Sub transposeData()
  Dim lngLast As Long, lngRow As Long, lngLastCol As Long, lngCol As Long
  Dim lngNewRows As Long, lngIndex As Long
  Dim vntNew() As Variant
  With ActiveSheet
    lngLast = Application.Max(clngFirstDataRow, .Cells(.Rows.Count, clngFirstDataColumn).End(xlUp).Row)
    lngLastCol = .Cells(clngHeaderRow, .Columns.Count).End(xlToLeft).Column
    lngNewRows = Application.CountA(.Range(.Cells(clngFirstDataColumn, clngFirstDataColumn + 1), .Cells(lngLast, lngLastCol)))
    Redim vntNew(1 To lngNewRows, 1 To 3)
    
    For lngRow = clngFirstDataRow To lngLast
      If Application.Count(.Range(.Cells(lngRow, clngFirstDataColumn + 1), .Cells(lngRow, lngLastCol))) > 0 Then
        For lngCol = 2 To lngLastCol
          If .Cells(lngRow, lngCol) <> "" Then
            lngIndex = lngIndex + 1
            vntNew(lngIndex, 1) = .Cells(lngRow, clngFirstDataColumn)
            vntNew(lngIndex, 2) = .Cells(clngHeaderRow, lngCol)
            vntNew(lngIndex, 3) = .Cells(lngRow, lngCol)
          End If
        Next
      End If
    Next
  End With
  If lngIndex > 0 Then
    Worksheets.Add after:=ActiveSheet
    With ActiveSheet
      .Cells(1, 1).Resize(lngNewRows, 3) = vntNew
      .Range("A1").CurrentRegion.Sort Key1:=.Range("A1"), Order1:=xlAscending, _
        Key2:=.Range("B1"), Order2:=xlAscending, Header:=xlNo
    End With
  End If
End Sub


« Gruß Sepp »

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige