Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1460to1464
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

Aus bestimmten Worksheets Daten lesen

Aus bestimmten Worksheets Daten lesen
01.12.2015 12:17:29
Vanessa
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aus bestimmten Worksheets Daten lesen
01.12.2015 13:03:01
fcs
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

Anzeige
AW: Aus bestimmten Worksheets Daten lesen
01.12.2015 13:24:21
Vanessa
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

AW: Aus bestimmten Worksheets Daten lesen
01.12.2015 16:07:17
fcs
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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige