Anzeige
Archiv - Navigation
1540to1544
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

Datensätze importieren

Datensätze importieren
13.02.2017 23:09:21
Ned
Hallo zusammen,
Ich habe ein kleines Problem und hoffe ihr könnt mir weiter helfen.
Auf dem ersten Tabellenblatt "Datenbank" ist eine Tabelle diese fungiert als Datenbank und soll bzw, kann gefiltert werden.
Diese gefilterten oder ungefilterten Datensätze (bezeichnet mit E, H und M) möchte ich per Klick auf einen CommandButton "Import" in das zweite Tabellenblatt "Diagramm" importieren. Hier wäre es noch cool wenn immer alle Datensätze importiert werden die in der Spalte enthalten sind also aktuell 11 aber vielleicht sind es irgend wann mal 200 und dann sollen trotzdem alle importiert werden.
Weil diese Datensätze dann in einem Diagramm dargestellt, werden sollen. Ich habe schon alles mit Makros und Formel probiert, was mir so eingefallen ist, nur leider hat es nie funktioniert…. Ich hoffe einer von euch kann mir weiterhelfen!?
Zusätzlich würde mich noch interessieren, ob ich ebenfalls per CommandButton das Diagramm erzeugen kann!?
Hier ist der Link für die Datei!
https://www.herber.de/bbs/user/111464.xlsm
Vielen Dank für euer bemühen!
Gruß
Ned Flanders

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datensätze importieren
14.02.2017 08:55:36
Max2
Hallo, solltest du zu untenstehendem fragen haben oder sollte etwas nicht funktionieren, bitte melden
(habe einen Button auf dem Blatt Datenbank eingefügt, den Code vom Button "Import" habe ich Ausversehen gelöscht)
hier die Mappe: https://www.herber.de/bbs/user/111468.xlsm
und hier nur der Code:

Option Explicit
Sub data_export()
Dim wsdata As Worksheet, wstarget As Worksheet
Dim rng, c As Range
Dim lzeile As Long
Dim arr_daten()
Dim i, j
Set wstarget = ThisWorkbook.Sheets("Neubeschaffung")
Set wsdata = ThisWorkbook.Sheets("Datenbank")
With wsdata
lzeile = .Cells(.Rows.Count, 8).End(xlUp).Row 'letzte Zeile
i = lzeile - 5 'um Array exakt zu Dimensionieren
j = 0
ReDim arr_daten(2, i)
Set rng = .Range(.Cells(5, 5), .Cells(lzeile, 5))
For Each c In rng
If c.Value  "" Then 'jede Zelle die nicht Leer ist...
arr_daten(0, j) = c.Value 'Aus E
arr_daten(1, j) = c.Offset(, 3).Value 'Aus H
arr_daten(2, j) = c.Offset(, 8).Value 'Aus M
End If
If j 

Anzeige
AW: Datensätze importieren
14.02.2017 08:55:39
Max2
Hallo, solltest du zu untenstehendem fragen haben oder sollte etwas nicht funktionieren, bitte melden
(habe einen Button auf dem Blatt Datenbank eingefügt, den Code vom Button "Import" habe ich Ausversehen gelöscht)
hier die Mappe: https://www.herber.de/bbs/user/111468.xlsm
und hier nur der Code:

Option Explicit
Sub data_export()
Dim wsdata As Worksheet, wstarget As Worksheet
Dim rng, c As Range
Dim lzeile As Long
Dim arr_daten()
Dim i, j
Set wstarget = ThisWorkbook.Sheets("Neubeschaffung")
Set wsdata = ThisWorkbook.Sheets("Datenbank")
With wsdata
lzeile = .Cells(.Rows.Count, 8).End(xlUp).Row 'letzte Zeile
i = lzeile - 5 'um Array exakt zu Dimensionieren
j = 0
ReDim arr_daten(2, i)
Set rng = .Range(.Cells(5, 5), .Cells(lzeile, 5))
For Each c In rng
If c.Value  "" Then 'jede Zelle die nicht Leer ist...
arr_daten(0, j) = c.Value 'Aus E
arr_daten(1, j) = c.Offset(, 3).Value 'Aus H
arr_daten(2, j) = c.Offset(, 8).Value 'Aus M
End If
If j 

Anzeige
AW: Datensätze importieren
14.02.2017 19:49:46
Ned
Hey Max2,
vielen Dank für deine schnelle Hilfe du hast mir schon sehr weiter geholfen!
Eine Kleinigkeit hätte ich jedoch noch. Wenn ich Datensätze im Tabellenblatt "Datenbank" gefiltert habe und von den Insgesamt 11 Datensätzen nur noch 7 vorhanden sind, dann werden aktuell noch die 11 importiert und nicht die 7 gefilterten. Läst sich das noch einbauen bzw. ist so was überhaupt realisierbar?
Ich habe in der Datei, die Button so gelegt wie ich es mir vorgestellt habe! ;)
Und hier ist der Link:
https://www.herber.de/bbs/user/111491.xlsm
Vielen Dank!
Gruß
Ned Flanders
Anzeige
AW: Datensätze importieren
17.02.2017 16:40:32
Max2
Hallo, tut mir leid für die späte Antwort.
das Problem sind die AutoFilter Kriterien, es werden dadurch nur Zeilen ausgeblendet.
Man muss also den Code folgend ergänzen:

If c.EntireRow.Hidden = False Then
If c.Value  "" Then 'jede Zelle die nicht Leer ist...
arr_daten(0, j) = c.Value 'Aus E
arr_daten(1, j) = c.Offset(, 3).Value 'Aus H
arr_daten(2, j) = c.Offset(, 8).Value 'Aus M
End If
End If
Allerdings gibt es noch ein Problem beim einfügen der Daten aus dem Array da nun das Array
falsch dimensioniert wird und .Cells(25 + i,...) nun nicht mehr funktioniert.
Das schaue ich mir morgen nochmal an :)
Anzeige
Fertiger Code
17.02.2017 21:34:29
Max2
Hallo,
hier die Mappe mit Code: https://www.herber.de/bbs/user/111560.xlsm
Ich habe ein paar Kommentare in den Code eingefügt um ihn verständlicher zu machen
Hier Code:

Option Explicit
Sub data_export()
Dim wsdata As Worksheet, wstarget As Worksheet
Dim rng, c As Range
Dim lzeile As Long
Dim arr_daten()
Dim i, j
Set wstarget = ThisWorkbook.Sheets("Neubeschaffung")
Set wsdata = ThisWorkbook.Sheets("Datenbank")
With wsdata
lzeile = .Cells(.Rows.Count, 8).End(xlUp).Row 'letzte Zeile
j = 0
'Setzen der Range und Schleife beginnen
Set rng = .Range(.Cells(5, 5), .Cells(lzeile, 5))
For Each c In rng
'Wenn die Zeile nicht unsichtbar ist dann...
If c.EntireRow.Hidden = False Then
'Neu-Dimensionieren wir das Array
ReDim Preserve arr_daten(2, j)
'Wenn Inhalt der Zelle nicht nichts ist dann...
If c.Value  "" Then
'Dann holen wir uns die Daten aus E; H; M
arr_daten(0, j) = c.Value
arr_daten(1, j) = c.Offset(, 3).Value
arr_daten(2, j) = c.Offset(, 8).Value
End If
'Wir vergrößern j um das Array bei erneutem durchlauf
'erneut vergrößern zu können
j = j + 1
End If
Next c
'Wir tragen nun die Daten des Arrays in "dynamisch" in die Tabelle
With wstarget
'i = 0 bis j - 1 da wir sonst einen Index fehler bekommen
For i = 0 To (j - 1)
'Wir beginnen in Zellen F25; G25; H25
.Cells(25 + i, 6).Value = arr_daten(0, i)
.Cells(25 + i, 7).Value = arr_daten(1, i)
.Cells(25 + i, 8).Value = arr_daten(2, i)
Next i
End With
End With
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige