Office: Tabellenblätter M:M auslesen; in neues Blatt auflisten

Helfe beim Thema Tabellenblätter M:M auslesen; in neues Blatt auflisten in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, da bin ich wieder mit einem neuen Problem. Benötige Hilfe beim Auslesen meherer Tabellenblätter. Ist es möglich, dass Daten aus Spalten M:M... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von timi, 28. April 2008.

  1. timi Erfahrener User

    Tabellenblätter M:M auslesen; in neues Blatt auflisten


    Hallo, da bin ich wieder mit einem neuen Problem.

    Benötige Hilfe beim Auslesen meherer Tabellenblätter.
    Ist es möglich, dass Daten aus Spalten M:M + N:N + P:P ab Zelle 14 bis unendlich aus
    den Tabellenblättern, die mit dem Namen "2008-" anfangen, permanent ausgelesen werden können und in einem neuen Tabellenblatt in (z.B. B:B + C:C + D:D ab Zeile 6 bis unendlich )untereinander aufgelistet werden?
    Jedoch sollten diese nur aufgelistet werden sobald M:M ab Zelle 14 in der Quelle auch bechrieben wurde (Wenn z.B. Spalte M:M Zelle 14 keinen Eintrag hat, soll diese und die weiteren 2 Positionen ( N:N + P:P jeweils Zelle 14 ) nicht aufgelistet werden. Wäre auch Platzverschwendung!)

    Gruß Timi
     
  2. schatzi Super-Moderator
    Hallo!

    Teste es mal, indem du diesen Code ins Modul des neuen Tabellenblatts kopierst:
    Code:
    Private Sub Worksheet_Activate()
    Dim ws As Worksheet, i As Long
    Range("6:65536").Clear
    For Each ws In ThisWorkbook.Worksheets
    If Left(ws.Name, 5) = "2008-" Then
    ws.Range("M14:P" & ws.Range("M65536").End(xlUp).Row).Copy
    Cells(WorksheetFunction.Max(6, Range("A65536").End(xlUp).Row + 1), 2).PasteSpecial Paste:=xlValues
    End If
    Next ws
    Columns(3).Delete
    For i = Range("A65536").End(xlUp).Row To 6 Step -1
    If IsEmpty(Cells(i, 2)) Then Rows(i).Delete
    Next i
    End Sub
    Der Name des neuen Blatts sollte allerdings NICHT mit "2008-" beginnen.
     
    schatzi, 28. April 2008
    #2
  3. miriki Erfahrener User
    Mit VBA zumindest ja. Ob man mit Formeln auch was werden kann? Dazu würde mir jetzt der Ansatz fehlen. Aber in VBA ist das relativ simpel mit ein paar Schleifen zu erledigen.

    Schauen wir mal...

    Code:
    trg="Zielblatt" 'ergebnis-blatt
    y2=5 'ab zeile 6 (geht mit +1 los...)
    for i=1 to worksheets.count 'alle blätter
      if left$(worksheets(i).name,5)="2008-" 'die mit "2008-" beginnen
        for y1=14 to worksheets(i).usedrange.rows.count 'ab zeile 14 bis ende
          if trim$(worksheets(i).cells(y1,13).value)<>"" 'spalte m nicht leer?
            y2=y2+1 'zielblatt nächste zeile
            worksheets(trg).cells(y2,13).value=worksheets(i).cells(y1,2).value 'm nach b
            worksheets(trg).cells(y2,14).value=worksheets(i).cells(y1,3).value 'n nach c
            worksheets(trg).cells(y2,16).value=worksheets(i).cells(y1,4).value 'p nach d
          endif
        next y1
      endif
    next i
    (Das ist jetzt mal völlig ungetestet und aus dem Stegreif heraus! Mind. 2 Erweiterungen würden mir einfallen:

    a) Das Blatt "Zielblatt" muß bereits existieren und sollte sinnvollerweise völlig leer sein. Denkbar wäre, das neue Blatt ebenfalls von VBA aus erzeugen zu lassen.

    b) y2=y2+1
    Das könnte, genügend Datensätze vorausgesetzt, ganz fix über 65536 (und damit das Zeilen-Limit) hinaus gehen und dann eine Fehlermeldung verursachen. Hier wäre also ggf. noch eine IF-Abfrage einzubauen, um das zu verhindern.

    Das Ergebnis wird übrigens so erstellt, daß im Ziel die Werte völlig ohne Formatierung stehen. Alternativ ließe sich das mit "copy" und "pastespecial" erledigen, wobei man dann auch setzen kann, ob die Werte direkt, oder auch die formeln kopiert werden sollen. Naja, viele Wege führen nach Rom...

    Wie auch immer, den Code kann man dann auf diverseste Form in die Mappe bekommen. Eine der leichtesten ist vielleicht, mit dem Makro-Rekorder ein neues Makro aufzuzeichnen (mit Hotkey-Vergabe), die Aufzeichnung nach der ersten Aktion abzuschalten, den VBA-Editor aufrufen und den Code im aufgezeichneten Makro mit Obigem ersetzen.

    Viel Erfolg... ;-)

    Gruß, Michael
     
    miriki, 28. April 2008
    #3
  4. timi Erfahrener User

    Tabellenblätter M:M auslesen; in neues Blatt auflisten

    Hab' beide Anweisungen ausprobiert und es klappt nicht. Das einzige was kopiert wird sind die Bezeichnungen der Spalten, aber nicht der Inhalt der Spalten. Eine Formel ( wenn die überhaupt erstellbar wäre ) wäre auch OK.
    Habe schon mit SVERWEIS rumgetüfftelt, jedoch ohne Erfolg. Das Problem ist, das alle Tabellenblätter, die mit "2008-" anfangen, durchsucht werden müssen. Mit einem Tabellenblatt krieg' ich's hin, aber gleich mehrere, das übersteigt meine Fähigkeiten.
    Mein Problem mal geschildert:
    Möchte eine Rechnung schreiben. Füge eine Artikelnummer ein, und es soll automatisch mit Bezeichnung,Preis,Käufer,Auftragnummer etc. ausgefüllt werden. Die Artikelnummern mit den dazugehörigen Angaben stehen immer an der gleichen Position, jedoch auf den gewissen Tabellenblätter, die mit "2008-" anfangen, zerstreut. SVERWEIS müsste nun all dieTabellenblätter, die mit "2008-" anfangen durchsuchen. Dies bekomme ich nicht hin.
    Daher die Idee, des Kopierens aller Daten der Tabellenblätter, welche mit "2008-" anfangen auf ein einziges, damit ich mit SVERWEIS weiter arbeiten kann.
    Gruß Timi
     
  5. schatzi Super-Moderator
    Hallo!

    Mein Code hatte noch ein bis zwei Tippfehler, aber so klappt es bei mir:
    Code:
    Private Sub Worksheet_Activate()
    Dim ws As Worksheet, i As Long
    Range("6:65536").Clear
    For Each ws In ThisWorkbook.Worksheets
    If Left(ws.Name, 5) = "2008-" Then
    ws.Range("M14:P" & ws.Range("M65536").End(xlUp).Row).Copy
    Cells(WorksheetFunction.Max(6, Range("A65536").End(xlUp).Row + 1), 2).PasteSpecial Paste:=xlValues
    End If
    Next ws
    Columns(4).Delete
    For i = Range("B65536").End(xlUp).Row To 6 Step -1
    If IsEmpty(Cells(i, 2)) Then Rows(i).Delete
    Next i
    End Sub
     
    schatzi, 28. April 2008
    #5
  6. miriki Erfahrener User
    In meiner Variante war leider ein kleiner Fehler:
    Code:
    worksheets(trg).cells(y2,13).value=worksheets(i).cells(y1,2).value 'm nach b
    Hier (und den beiden Folge-Zeilen) hab ich doch glatt Quelle und Ziel wervechselt! Tausche hier bitte die 13 mit der 2 aus, in den beiden nächsten Zeilen entsprechend.

    Ansonsten müßte es aber funktionieren. Und wenn Excel beim Ausführen des Makros blöde meckert wegen nicht deklarierten Variablen, weil ganz oben ein "option explicit" steht:

    Code:
    dim trg as string
    dim y2 as long
    dim i as long
    dim y1 as long
    Und das zwischen die Zeile mit "Sub ..." und der Zeile mit "trg=..." setzen.

    Gruß, Michael


    Gruß, Michael
     
    miriki, 28. April 2008
    #6
  7. timi Erfahrener User
    Habe mich nochmals daran versucht.
    Bei dem einen Blatt, welches mit 2008- anfängt(2008-001) reagiert mein neues Tabellenblatt erst ab M17 und folgende und kopiert diese Werte in sich hinein.
    Bei dem anderen Blatt(2008-002) reagiert das neue Tabellenblatt erst ab M18 und folgende, und schreibt diese Werte in sich hinein.
    Die Werte von M14 -M16 werden im ersten Fall nicht übernommen, sowie im zweiten die Werte von M14-M17.
    Komisch? Bin ich zu blöd für diese Welt? :shock:

    Betrifft die Formel von Schatzi!
     
  8. schatzi Super-Moderator

    Tabellenblätter M:M auslesen; in neues Blatt auflisten

    Hab' noch einen Fehler korrigiert:
    Code:
    Private Sub Worksheet_Activate()
    Dim ws As Worksheet, i As Long
    Range("6:65536").Clear
    For Each ws In ThisWorkbook.Worksheets
    If Left(ws.Name, 5) = "2008-" Then
    ws.Range("M14:P" & ws.Range("M65536").End(xlUp).Row).Copy
    Cells(WorksheetFunction.Max(6, Range("B65536").End(xlUp).Row + 1), 2).PasteSpecial Paste:=xlValues
    End If
    Next ws
    Columns(4).Delete
    For i = Range("B65536").End(xlUp).Row To 6 Step -1
    If IsEmpty(Cells(i, 2)) Then Rows(i).Delete
    Next i
    End Sub
     
    schatzi, 28. April 2008
    #8
  9. timi Erfahrener User
    Hab jetzt zwei Versionen parallel laufen.
    Die von miriki und die von Schatzi.

    Folgendes wird bei der Formel von miriki angezeigt:
    FEHLER BEIM KOMPILIEREN!
    Syntaxfehler

    if left$(worksheets(i).name,5)="2008-" 'die mit "2008-" beginnen

    if trim$(worksheets(i).cells(y1,13).value)<>"" 'spalte m nicht leer?


    Die Formel von Schatzi wird nun auf Herz und Nieren geprüft! Ergebnis folgt!
     
  10. schatzi Super-Moderator
    Hallo!

    Bei miriki fehlt in diesen Zeilen jeweils das "Then".
     
    schatzi, 28. April 2008
    #10
  11. timi Erfahrener User
    Hallo Schatzi,

    kann das sein, das bei Deiner Anweisung auch noch Bereiche oberhalb der Zeilen 14 mitgeschleppt werden?
    Ist bei mir der Fall.
    In diesem Fall die Spaltenbeschreibung. Wäre nicht schlimm, jedoch wird sie bei mir im neuen Tabellenblatt unten eingefügt und nicht oben
    Ansonsten läuft diese Anweisung bis jetzt reibungslos!

    Gruß Timi
     
  12. schatzi Super-Moderator
    Hallo!

    Eigentlich kann das höchstens passieren, wenn ab Zeile 14 überhaupt keine Daten vorhanden sind.
    Sonst kann ich mir das nicht erklären...
     
    schatzi, 28. April 2008
    #12
  13. timi Erfahrener User

    Tabellenblätter M:M auslesen; in neues Blatt auflisten

    Worksheets(trg).Cells(y13, 2).Value = Worksheets(i).Cells(y1, 2).Value 'm nach b
    Worksheets(trg).Cells(y14, 2).Value = Worksheets(i).Cells(y1, 3).Value 'n nach c
    Worksheets(trg).Cells(y16, 2).Value = Worksheets(i).Cells(y1, 4).Value 'p nach d

    wird bei miriki gelb unterlegt mit gelbem Pfeil auf die ganze Zeile.
    Laufzeitfehler 9

    Könnt ihr mir da weiterhelfen?

    Gruß Timi
     
  14. timi Erfahrener User
    Eigentlich kann das höchstens passieren, wenn ab Zeile 14...

    Hallo Schatzi, Du hattest Recht mit den leeren Zellen.
    Da ist ja noch das Musterblatt(2008-Muster), welches typischerweise ohne Inhalt ist.
    Habe "TEST" in die Zellen reingeschrieben und schon funktionierts!

    Vielen Dank!
     
  15. timi Erfahrener User
    Noch ein Problem,
    SVERWEIS zu diesem neuen Tabellenblatt mit kopierten Daten nicht möglich, da diese Daten erst drinstehen, wenn ich es öffne; also nicht permant abgespeichert und aktualisiert werden.
    Die Liste erstellt sich leider erst nach dem Öffnen des Blattes, somit kann SVERWEIS dort drin ja auch nix finden, wenn ich auf einem anderen Blatt Daten brauche.

    Gru? Timi
     
Thema:

Tabellenblätter M:M auslesen; in neues Blatt auflisten

Die Seite wird geladen...
  1. Tabellenblätter M:M auslesen; in neues Blatt auflisten - Similar Threads - Tabellenblätter auslesen Blatt

  2. Tabelle soll autom. um Inhalte aus anderem Tabellenblatt erweitert werden

    in Microsoft Excel Hilfe
    Tabelle soll autom. um Inhalte aus anderem Tabellenblatt erweitert werden: Hallo zusammen, ich soll eine Übersicht über verschiedene Aufträge darstellen. Dabei soll die Übersicht alle Aufträge und die dazugehörenden Informationen automatisch aus anderen Tabelleblättern...
  3. Werte aus Pdf auslesen und in Tabellenblatt schreiben

    in Microsoft Excel Hilfe
    Werte aus Pdf auslesen und in Tabellenblatt schreiben: Liebe VBA-Profis Ich habe einen Ordner, in diesem befindet sich eine Excel-Datei namens "Bearbeitung.xlsm" + mehrere durchsuchbare Pdf-Dateien. Diese Pff-Dateien sind in Formular-Form aufgebaut...
  4. Seitenzahl der Tabellenblätter auslesen

    in Microsoft Excel Hilfe
    Seitenzahl der Tabellenblätter auslesen: Hallo zusammen, ich habe verschiedene Tabellenblätter, die im Seitenlayout formatiert sind. Der Inhalt baut sich nach unten auf, sodass je nach Menge mehrere Seiten untereinander angeordnet sind....
  5. [VBA] werte auslesen und in neues Tabellenblatt kopieren

    in Microsoft Excel Hilfe
    [VBA] werte auslesen und in neues Tabellenblatt kopieren: Hallo an alle, ich bin neu hier und auch noch ein ziemlicher Anfänger, wenn es um das Thema VBA geht. Ich hoffe, dass mir hier jemand bei meinem Problem helfen kann. Dafür habe ich auch die...
  6. Daten aus zwei Tabellenblätter in ein neues auslesen

    in Microsoft Excel Hilfe
    Daten aus zwei Tabellenblätter in ein neues auslesen: Liebe Excel-Profis! Ich hoffe auf eure Hilfe! Da mein einziger Excelkurs schon Jahre zurückliegt und ich nie wirklich mit Excel arbeiten musste, scheitere ich gerade an folgender...
  7. Frage zum Thema: Zeilen auslesen / Daten aus Zeilen in andere Tabelle übertragen.

    in Microsoft Excel Hilfe
    Frage zum Thema: Zeilen auslesen / Daten aus Zeilen in andere Tabelle übertragen.: Hallo beisammen, ich bin hier neu und beginne mich gerade mit Excel auseinander zu setzen. Und was gibt es besseres um zu lernen als ein praktisches Beispiel. Ich hoffe, dass mein gewählter Titel...
  8. Auslesen und niederschreiben der Tabellenblätter

    in Microsoft Excel Hilfe
    Auslesen und niederschreiben der Tabellenblätter: Hallo liebes Forum, such eine Lösung für mein kleines Problemchen: Mir geht es um das auslesen der Tabellenblätter in einer Excel-Datei (Mappe). Diese müssen aber in der gleichen Mappe, in...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden