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! Nachdem das Blatt EINmal aktiviert wurde, stehen die Daten permanent drin, daher müsste dann auch ein SVERWEIS auf dieses Blatt... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von timi, 28. April 2008.

  1. schatzi Super-Moderator

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


    Hallo!

    Nachdem das Blatt EINmal aktiviert wurde, stehen die Daten permanent drin, daher müsste dann auch ein SVERWEIS auf dieses Blatt funktionieren.

    Andererseits brauchst du es ja auch nicht zwingend in ein Activate-Ereignis zu packen, sondern kannst ja auch per Button-Klick aktualisieren.
     
    schatzi, 28. April 2008
    #16
  2. timi Erfahrener User
    Hallo

    kann mir denn niemand weiterhelfen?

    Diese Anweisungen müssten lt. Excel einen Fehler aufweisen. Werden gelb markiert / Laufzeitfehler 9

    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

    Gruß Timi
     
  3. schatzi Super-Moderator
    Hallo!

    Du hast die falschen Werte ersetzt!
    So ist's richtig:
    Code:
    Worksheets(trg).Cells(y2, 2).Value = Worksheets(i).Cells(y1, 13).Value 'm nach b
    Worksheets(trg).Cells(y2, 3).Value = Worksheets(i).Cells(y1, 14).Value 'n nach c
    Worksheets(trg).Cells(y2, 4).Value = Worksheets(i).Cells(y1, 16).Value 'p nach d
     
    schatzi, 28. April 2008
    #18
  4. timi Erfahrener User

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

    Danke Schatzi!

    Immer noch gelb unterlegt. Do is doch ebbes net richtig?

    Gruß Timi
     
  5. schatzi Super-Moderator
    Hallo!

    Hast du miriki's Hinweis auf der ersten Seite bezgl. "Option Explicit" gelesen?
    (Bei mir läuft der Code...)
     
    schatzi, 28. April 2008
    #20
  6. timi Erfahrener User
    Ich steh' auf'm Schlauch!
    Moment ich geh' mal runter!
    Option explicit?
     
  7. schatzi Super-Moderator
    Hallo!

    Ein erstes und letztes Mal übernehme ich das Lesen für dich:
    Außerdem (und das war noch nicht zur Sprache gekommen) muss dein neues Blatt "Zielblatt" heißen.
     
    schatzi, 28. April 2008
    #22
  8. timi Erfahrener User

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

    Hallo, hier spricht der Mann vom "Hinterm Mond".

    Wie gut, dass es Euch/Dich gibt.
    Diese "option explicit" hatte ich bereits eingefügt, als ich die Meldung von Miriki bekam, dass ich etwas abändern müsste, was ich natürlich auch noch dollerweise falsch abgeändert hatte, Naja.

    Man(n) sollte vielleicht die Anweisung mal ganz genau lesen! Dieses Ändern auf "Zielblatt" hab ich echt voll verpennt! Hab' mich die ganze Zeit auch gewundert? :shock:
    Deine Anweisung läuft, und die von Miriki tut absolut nichts!

    Vielen Dank für Eure Geduld!
    Ist immer wieder interessant, was dazuzulernen!

    Gruß Timi
     
  9. schatzi Super-Moderator
    Hallo!
    Das kann ich so aber nicht stehen lassen...
     
    schatzi, 28. April 2008
    #24
  10. timi Erfahrener User
    Nein die von Miriki geht natürlich auch!
    Jetzt, wo ich mein Tabellenblatt umbenannt habe!
    Ich meinte nur,
    die ganze Zeit lief Deine Version parallel zu der von Miriki und ich wunderte mich, warum die von Miriki nicht lief?
    War mein Fehler, das Tabellenblatt nicht umzubenennen!
    Habe die von Miriki um ein paar Spalten erweitert ( etwa 20 ).
    Kann das sein, das aufgrund der etwas größeren Menge mein Excel jetzt nahezu einschläft?

    Gruß Timi
     
  11. schatzi Super-Moderator
    Hallo!

    Ich weiß nicht, wieviel PS du unter'm Hintern hast und um wieviele Daten (Zeilen) es sich im Original handelt (und wie du den Code angepasst hast), aber bei sehr vielen Spalten kann es schon sein, dass miriki's Code dann an Geschwindigkeit etwas nachlässt, da dieser Code jeden Wert einzeln einliest.
    Aber "Einschlafen", naja, das müsstest du dann schon etwas präziser beschreiben...
     
    schatzi, 29. April 2008
    #26
  12. timi Erfahrener User
    Ich tüftele doch schon längere Zeit an meinem kleinen Excelchen, damit es mir die Arbeit erleichtert. Du hast mir ja schon oft aus der Patsche geholfen, als ich nimmer weiter wusste.
    Ich merke schon seit geraumer Zeit, dass mein Excelchen sehr lahm wird.
    Extrem bei Miriki's Code dauert es sehr lange und Excelchen steht für 'ne Weile.
    PS hab' ich 3,2 GHz; 2Gig Ram; SATA II; usw. Western Raptor HDD.
    Außerhalb von Excel rennt die Kutsche wie die Wutz!

    Hier die Formel, welche ich zu meinem Zweck ein wenig entfremdet hab':
    ( Hoffe, Dir kommen nicht die Tränen; ich meine die Lachtränen!!! )
    :lol:
    Private Sub Worksheet_Activate()
    Dim trg As String
    Dim y2 As Long
    Dim i As Long
    Dim y1 As Long
    trg = "Alle Artikel der Klienten" 'ergebnis-blatt
    y2 = 7 'ab zeile 8 (geht mit +1 los...)
    For i = 1 To Worksheets.Count 'alle blätter
    If Left$(Worksheets(i).Name, 5) = "2008-" Then '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) <> "" Then 'spalte m nicht leer?
    y2 = y2 + 1 'zielblatt nächste zeile
    Worksheets(trg).Cells(y2, 15).Value = Worksheets(i).Cells(y1, 10).Value 'm nach b
    Worksheets(trg).Cells(y2, 16).Value = Worksheets(i).Cells(y1, 11).Value 'm nach b
    Worksheets(trg).Cells(y2, 17).Value = Worksheets(i).Cells(y1, 12).Value 'm nach b
    Worksheets(trg).Cells(y2, 18).Value = Worksheets(i).Cells(y1, 13).Value 'm nach b
    Worksheets(trg).Cells(y2, 19).Value = Worksheets(i).Cells(y1, 14).Value 'n nach c
    Worksheets(trg).Cells(y2, 20).Value = Worksheets(i).Cells(y1, 15).Value 'p nach d
    Worksheets(trg).Cells(y2, 21).Value = Worksheets(i).Cells(y1, 16).Value 'p nach d
    Worksheets(trg).Cells(y2, 22).Value = Worksheets(i).Cells(y1, 17).Value 'm nach b
    Worksheets(trg).Cells(y2, 23).Value = Worksheets(i).Cells(y1, 18).Value 'm nach b
    Worksheets(trg).Cells(y2, 24).Value = Worksheets(i).Cells(y1, 19).Value 'm nach b
    Worksheets(trg).Cells(y2, 25).Value = Worksheets(i).Cells(y1, 20).Value 'm nach b
    Worksheets(trg).Cells(y2, 26).Value = Worksheets(i).Cells(y1, 21).Value 'm nach b
    Worksheets(trg).Cells(y2, 27).Value = Worksheets(i).Cells(y1, 22).Value 'm nach b
    Worksheets(trg).Cells(y2, 28).Value = Worksheets(i).Cells(y1, 23).Value 'm nach b
    Worksheets(trg).Cells(y2, 29).Value = Worksheets(i).Cells(y1, 24).Value 'm nach b
    Worksheets(trg).Cells(y2, 30).Value = Worksheets(i).Cells(y1, 25).Value 'm nach b
    Worksheets(trg).Cells(y2, 31).Value = Worksheets(i).Cells(y1, 26).Value 'm nach b
    Worksheets(trg).Cells(y2, 32).Value = Worksheets(i).Cells(y1, 27).Value 'm nach b
    Worksheets(trg).Cells(y2, 33).Value = Worksheets(i).Cells(y1, 28).Value 'm nach b
    Worksheets(trg).Cells(y2, 34).Value = Worksheets(i).Cells(y1, 29).Value 'm nach b
    Worksheets(trg).Cells(y2, 35).Value = Worksheets(i).Cells(y1, 30).Value 'm nach b
    Worksheets(trg).Cells(y2, 36).Value = Worksheets(i).Cells(y1, 31).Value 'm nach b
    Worksheets(trg).Cells(y2, 37).Value = Worksheets(i).Cells(y1, 32).Value 'm nach b
    Worksheets(trg).Cells(y2, 38).Value = Worksheets(i).Cells(y1, 33).Value 'm nach b
    Worksheets(trg).Cells(y2, 39).Value = Worksheets(i).Cells(y1, 34).Value 'm nach b
    Worksheets(trg).Cells(y2, 40).Value = Worksheets(i).Cells(y1, 35).Value 'm nach b
    Worksheets(trg).Cells(y2, 41).Value = Worksheets(i).Cells(y1, 36).Value 'm nach b
    Worksheets(trg).Cells(y2, 42).Value = Worksheets(i).Cells(y1, 37).Value 'm nach b
    Worksheets(trg).Cells(y2, 43).Value = Worksheets(i).Cells(y1, 38).Value 'm nach b
    End If
    Next y1
    End If
    Next i
    End Sub
    :lol:

    War so ein spontaner Gedanke, die Anweisung so anzupassen.
    Vielleicht auch in Kurzform machbar????

    Gruß
    Timi

    PS: Würde gerne die ganze Datei preisgeben, ist aber leider schon mit Daten gefüttert!
     
  13. schatzi Super-Moderator

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

    Hallo!

    Eigentlich dürfte das deinen Rechner nicht in die Knie zwingen.
    Nicht dass ich Geltungsbedürfnis hätte, aber: Warum nutzt du nicht meinen Code?

    ws.Range("M14:P" & ws.Range("M65536").End(xlUp).Row).Copy

    Eigentlich brauchst du nur den roten Teil anzupassen, wenn du noch mehr Spalten kopieren möchtest.
     
    schatzi, 30. April 2008
    #28
  14. miriki Erfahrener User
    Örks, ok... Das bremst die Sache in der Tat sicherlich etwas aus. Allerdings dürfte es nicht zum "Einschlafen" reichen.

    Sicherlich, in dem Fall schon. Da Dein Quell- und Zielbereich jeweils zusammenhängende Spalten sind, kann man den ganzen Bereich auf einen Rutsch kopieren:

    Code:
            worksheets(i).range(cells(y1,10),cells(y1,38)).copy destination:=worksheets(trg).cells(y2,15)
    Das kopiert die Zellen komplett, ohne Wenn und Aber. Damit würden also auch die Formatierungen mitkommen. Aber auch Formeln würden "as is" kopiert werden, nicht deren Ergebnisse.

    Sollte das nicht gewünscht sein, ginge auch:

    Code:
            worksheets(i).range(cells(y1,10),cells(y1,38)).copy
            worksheets(trg).cells(y2,15).pastespecial paste:=xlpastevalues
    Hiermit würden nur die Werte, nicht die Formeln und auch keine Formatierungen (Schriftfarbe, Hintergrundfarbe/muster, Rahmen, ...) kopiert werden.

    Die "einzelnen" Kopier-Anweisungen hatte ich deswegen benutzt, weil ich davon ausgegangen war, daß der Bereich eben nicht zusammenhängend ist. Wenn Du von 30 Spalten nur 3 im Ergebnis brauchst, ist es vielleicht nicht so sinnvoll, erst alle 30 zu kopieren um dann die überflüssigen 27 danach wieder zu löschen.

    Die "Schleifen"-Lösung von mir ist sicherlich nicht die schnellste Lösung. Denn sie muß jede Zeile einzeln durchklötern, überprüfen, ob ein Wert kopiert werden soll und dann die Werte der Zeile (einzeln oder im Stück) kopieren. Es war halt in erster Linie ein "Schnellschuß", der eine Möglichkeit zeigen sollte.

    Die Lösung von Schatzi ist garantiert schneller, da die Anwendung von Formel-Funktionen in Excel immer schneller ist, als ein VBA-Code, der "zu Fuß" das gleiche machen soll. Per VBA ist die Sache nur später ggf. übersichtlicher (einfacher, nach 6 Monaten noch zu verstehen, was man da eigentlich gemacht hat) und leichter anzupassen, wenn sich später Änderungen im Layout ergeben.

    (In dem Fall würde ich aber auch einige Konstanten, die direkt im Code stehen, durch Variablen ersetzen, die im Prozedur-Kopf gesetzt werden.)

    Gruß, Michael
     
  15. timi Erfahrener User
    Wenn Lösung von Schatzi schneller ist, wäre mir lieber.

    Wie ergänze ich dann diese Formel auf die von mir erweiterten Positionen?
    Spalten J:AL in Zielblatt O:AQ?

    Gruß

    Timi

    PS: Gibt es sonst noch Gründe, warum Excel so lahmt?
    Die Datei ist 1,26 MB groß( in dem Sinn: klein).
    Kann es durch zu viele SVERWEISE und Verknüpfungen ausgebremst werden bzw. wann hört bei Excel der Spaß auf; wann fängt das Programm an zu streiken und kocht über?
     
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