Aus bestimmten Worksheets Daten lesen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Aus bestimmten Worksheets Daten lesen
von: Vanessa
Geschrieben am: 01.12.2015 12:17:29

Hi Leute, ich habe eine kurze Frage.
Ich habe mehrere Worksheets mit je einer Tabelle, können mal mehr mal weniger sein.
Ich möchte auf einer Seite ohne Daten den Namen des Sheets festlegen, auf welches ich zugreifen will, möchte die Ergebnisse der Funktionen die ich dann anwende aber auf der ersten Seite haben.
Ich habe mir überlegt eine DropdownListe einzufügen und in VBA den Namen dieser Zelle mit den Namen aller Worksheets zu vergleichen, wie kann ich dem Programm jetzt erklären, dass die Daten aus dem Sheet mit dem passenden Namen verwendet werden sollen und die Ergebnisse aber in einem unabhägigen Sheet angezeigt werden sollen?
Liebe Grüße

Bild

Betrifft: AW: Aus bestimmten Worksheets Daten lesen
von: fcs
Geschrieben am: 01.12.2015 13:03:01
Hallo Vanessa,
der Start eines solchen Makros kann wie folgt aussehen.
Das Kopieren aller Daten ist dann nur beispielhaft.
Gruß
Franz

Sub aaTest()
  Dim wksZiel As Worksheet
  Dim wksQuelle As Worksheet
  Dim strBlatt As String
  
  strBlatt = ActiveSheet.Range("B3").Text 'B3 ist Zelle mit DropDown-Auswahl/verknüpfte Zelle
  Set wksZiel = ActiveSheet
'  Set wksZiel = ActiveWorkbook.Sheets(1) 'Alterntive, wenn Blatt in das Daten sollen immer _
      das 1. Registerblatt ist
  
  'Blatt mit gewählten Namen in Zelle B3 in Arbeitsmappe suchen
  For Each wksQuelle In ActiveWorkbook.Worksheets
    If LCase(wksQuelle.Name) = LCase(strBlatt) Then
      Exit For
    End If
  Next
  
  If wksQuelle Is Nothing Then
    MsgBox "Tabelle """ & strBlatt & """ nicht vorhanden"
    GoTo Beenden
  Else
    If MsgBox("Daten von Tabelle """ & strBlatt & """ nach Tabelle """ _
        & wksZiel.Name & """ übertragen?", _
        vbQuestion + vbOKCancel, "Daten übertragen") = vbCancel Then GoTo Beenden
  End If
  'hier dann die Anweisungen um Daten aus Quelle nach Ziel zu übertragen
  '...
  wksQuelle.UsedRange.Copy
  wksZiel.Range("A6").PasteSpecial Paste:=xlPasteValues
  Application.CutCopyMode = False
  '...
Beenden:
End Sub


Bild

Betrifft: AW: Aus bestimmten Worksheets Daten lesen
von: Vanessa
Geschrieben am: 01.12.2015 13:24:21
Wow vielen Dank für den klasse Code,funktioniert tadellos. Jetzt habe ich nur leider den Umweg, dass mir die Tabelle kopiert wird, ich kann meine Funktionen zwar ausführen aber die Idee war, nur Ergebnisse, keine Tabellen auf dem ersten Sheet zu haben. Gibt es eine Möglichkeit, die Range die ich aufspanne auf ein bestimmtes Blatt zu beziehen? So das ich die Funktionen auf ein variables Datenblatt zugreifen und ich nicht alles kopieren muss?
Liebe Grüße

Bild

Betrifft: AW: Aus bestimmten Worksheets Daten lesen
von: fcs
Geschrieben am: 01.12.2015 16:07:17
Hallo Vanessa,
aber die Idee war, nur Ergebnisse, keine Tabellen auf dem ersten Sheet zu haben.
Das Kopieren der Datenwar ja nur als Beispiel in das Makro eingebaut.
Gibt es eine Möglichkeit, die Range die ich aufspanne auf ein bestimmtes Blatt zu beziehen? So das ich die Funktionen auf ein variables Datenblatt zugreifen und ich nicht alles kopieren muss?
Grundsätzlich gibt es jetzt verschiedene Möglichkeiten:
1. Verwendung der Funktion INDIREKT
Der gefundene/gewünschte Blattname wird vom Makro in eine Zelle geschrieben.
Die Zellbereiche die die Funktionen auswerten sollen werden mit INDIREKT ermittelt.
z.B.: =SUMME(INDIREKT("'" & $B$4 & "'!C:C"))
2. Das Makro erstzt in den Formeln den alten Blattnamen
Diese Methode mag ich nicht so, weil es nicht so einfach ist, den alten Blattnamen zu ermitteln
3. Das Makro generiert die Formeln, baut dabei Blattnamen und ggf. variable Zellbereiche in die Formeln ein, und fügt sie dann im Ergebnisblatt ein.
Nachfolgend das Makro mit entsprechenden Ergänzungen für Formel-Lösung.
Für die Syntax deiner Formeln gibst du diese in dein Ergebnisblatt ein. Dabei möglichst mit absoluten Bezügen arbeiten.
Anschließend startest du den Makrorekorder und doppelklickst in jede Zelle mit Formel und schließst die Formeleingabe mit Enter ab. Dann Makrorecorder beenden. Die aufgezeichneten Formeln kopierst du dann in das Haupt Makro und baust wie in meinem Beispiel-Makro die variablen Teile ein.
Gruß
Franz

Sub aaTest()
  Dim wksZiel As Worksheet
  Dim wksQuelle As Worksheet
  Dim strBlatt As String
  
  Dim Zeile_1 As Long, Zeile_L As Long, Spalte_1 As Long, Spalte_L As Long, strFormel As String
  Dim Zeile As Long, Spalte As Long
  
  strBlatt = ActiveSheet.Range("B3").Text
  Set wksZiel = ActiveSheet
'  Set wksZiel = ActiveWorkbook.Sheets(1) 'Alterntive, wenn Blatt in das Daten sollen immer _
      das 1. Registerblatt ist
  
  'Blatt mit gewählten Namen in Zelle B3 in Arbeitsmappe suchen
  For Each wksQuelle In ActiveWorkbook.Worksheets
    If LCase(wksQuelle.Name) = LCase(strBlatt) Then
      Exit For
    End If
  Next
  
  If wksQuelle Is Nothing Then
    MsgBox "Tabelle """ & strBlatt & """ nicht vorhanden"
    GoTo Beenden
  Else
    If MsgBox("Daten von Tabelle """ & strBlatt & """ nach Tabelle """ _
        & wksZiel.Name & """ übertragen?", _
        vbQuestion + vbOKCancel, "Daten übertragen") = vbCancel Then GoTo Beenden
  End If
  'hier dann die Anweisungen um Daten aus Quelle nach Ziel zu übertragen
  'nachfolgend Beispiel für Formel-Lösung
  With wksQuelle
  
    Zeile_1 = 4 '1. Zeile des Bereichs in Quelle
    Spalte_1 = 2 '1. Spalte des Bereichs - B in Quelle
    
    'letzte Zeile mit Inhalt in Spalte B in Quelle
    Zeile_L = .Cells(.Rows.Count, 2).End(xlUp).Row
    'letzte Spalte mit Inhalt in Zeile 4 in Quelle
    Spalte_L = .Cells(4, .Columns.Count).End(xlToLeft).Column
    
    strFormel = "=SUM('" & .Name & "'!R" & Zeile_1 & "C" & Spalte_1 & ":R" & Zeile_L _
          & "C" & Spalte_L & ")"
'oder auch
    strFormel = "=SUM('" & .Name & "'!R4C2:R" & Zeile_L & "C" & Spalte_L & ")"
          
    wksZiel.Range("B7").FormulaR1C1 = strFormel
  End With
  '...
Beenden:
End Sub


Bild

Betrifft: AW: Aus bestimmten Worksheets Daten lesen
von: Vanessa
Geschrieben am: 02.12.2015 13:48:18
Vielen Dank für deine Hilfe :)
Liebe Grüße

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Aus bestimmten Worksheets Daten lesen"