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

Externe Abfrage filtern und sortieren

Externe Abfrage filtern und sortieren
07.07.2017 08:04:46
JonnyBank
Hallo Excel/VBA Experten,
ich hab mal wieder ne Aufgabe wo ich einfach nicht weiter kommen.
Mein Tool ermittelt historische Aktienkurse für verschiedene Werte mit Yahoo finance.
Yahoo hat aber nun Anpassungen vorgenommen die zu Problemen führen.
Ich bekommen zu einigen Daten Aktienkurse von Null (kann nicht sein, wurde dann nur nicht gehandelt) Das führt zu fehlerhaften Berechnung. Ich brauche wenn es möglich ist einen Filter vor dem Einfügen in die Exceldatei. Dieser Sollte dann verhindern das Werte mit Null eingetragen werden. Das Datum sollte dann auch nicht erfasst werden.
Anschließend kann ich das nicht machen weil er dann auch Werte von anderen Aktien löschen würde bzw. dann leere Felder entstehen die zu Fehlern in der Folgeberechnung führen würden.
ich hoffe mir kann jemand dabei helfen =)
mfg JonnyBank

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Externe Abfrage filtern und sortieren
07.07.2017 08:37:27
fcs
Hallo JonnyBank,
eine mögliche Variante wäre die Daten von Yahoo auf einem separaten Blatt zu importieren, dann die Zeilen mit den 0-Werten zu löschen und dannach Die Daten in deine Auswerte-Tanelle zu kopieren.
Gruß
Franz
AW: Externe Abfrage filtern und sortieren
07.07.2017 09:17:40
JonnyBank
Danke für die Antwort,
das Problem ist das diese Daten teil eines sehr großen Tools sind und ich das alles ein einem zentralen Tool benötige.
und selbst dafür bräuchte ich dann auch ein Makro welches mir die nullen sucht und löscht.
mfg JonnyBank
Anzeige
AW: Externe Abfrage filtern und sortieren
07.07.2017 12:10:15
JonnyBank
Jemand vielleicht noch ne andere Idee?
AW: Externe Abfrage filtern und sortieren
07.07.2017 13:22:30
mmat
Es gibt ja nur die zwei Möglichkeiten:
- Entweder wird die Abfrage so modifiziert, das "fehlerhafte" Datensätze garnicht erst importiert werden. Ob das geht weiss ich nicht, aber wenn die Abfrage auf SQL basiert ist es eher einfach. Wie ist das aufgesetzt?
- oder die "fehlerhaften" Datensätze werden nach dem Import wieder rausgeschmissen, was u.u. die Installation eines Makros erforderlich macht, wenn der Anwender bisher nur auf "Daten aktualisieren" geklickert hat (oder die Aktualisierung automatisch beim Öffnen der Tabelle erfolgt).
Was hättest du denn gerne ?
vg, MM
Anzeige
AW: Externe Abfrage filtern und sortieren
07.07.2017 13:29:53
mmat
Nachtrag:
habe gerade die Beipieldaten gesichtet: ist das jetzt ein Problem, am Ende von "Kurs1" noch drei Zeilen dranzuhängen, die die lästigen Daten löschen ?
vg, MM
AW: Externe Abfrage filtern und sortieren
10.07.2017 07:45:18
JonnyBank
Hey mmat also ich glaube Version 1 ist zielführender,
sorry das ich jetzt erst antworte bin vor kurzen Vater geworden und da hat man nur selten Zeit nebenbei.
Mir ist es im Prinzip egal wie es funktioniert... Hauptsache keine leeren Zeilen und keine Datensätze mit null. Wäre für alles sehr dankbar.
gruß JonnyBank
AW: Externe Abfrage filtern und sortieren
11.07.2017 09:30:21
fcs
Hallo JonnyBank,
hier eine Variante
Die Inhalte in den unerwünschten Import-Zeilen werden gelöscht, dann der Zellbereich nach dem Datum sortiert. Laufzeit der Aufbereitung ca. 3 bis 5 Sekunden.
Gruß
Franz
Sub Kurs1()
'Deklaration der Variablen für den URL
Dim ticker, crumb
Dim period1, period2 As Long
' Nun sagen wir dem Programm wo sich die Variablen befinden
'Aktie:
ticker = Range("AktieSymbol1")
'Datum
period1 = Range("period1")
period2 = Range("period2")
crumb = Range("crum")
Range("B31:C15000").Select
Selection.ClearContents
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;https://query1.finance.yahoo.com/v7/finance/download/" & ticker & "?period1=" &  _
period1 & "&period2=" & period2 & "&interval=1d&events=history&crumb=" & crumb & "" _
, Destination:=Range("$B$31"))
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierNone
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
' aus 1 eine 9 machen um auszublenden
.TextFileColumnDataTypes = Array(1, 9, 9, 9, 9, 1, 9)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = " "
.Refresh BackgroundQuery:=False
Call prcCleanUp(Range("B31:C15000"))                        'neue Zeile
'Kommastellen und Autofit
Columns("B:C").EntireColumn.AutoFit
Columns("B:B").Select
Selection.NumberFormat = "m/d/yyyy"
Range("C31:C15000").Select
Selection.Style = "Comma"
End With
End Sub
Public Sub prcCleanUp(rngBereich As Range)
Dim Zeile As Long
Dim StatusCalc As Long
'löscht Zeilen mit Wert 0 in 2. Spalte oder wenn Zelltext = ""
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With rngBereich
For Zeile = 1 To rngBereich.Rows.Count
If .Cells(Zeile, 2).Value = 0 Then
.Rows(Zeile).ClearContents
ElseIf .Cells(Zeile, 1).Text = "" Or .Cells(Zeile, 2).Text = "" Then
.Rows(Zeile).ClearContents
End If
Next
.Sort key1:=.Range("A1"), Order1:=xlAscending, Header:=xlNo
End With
With Application
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End Sub

Anzeige
AW: Externe Abfrage filtern und sortieren
11.07.2017 10:30:28
JonnyBank
Hallo Franz,
vielen Dank für die Antwort bzw. den Code.
Wenn ich nur einen Wert hätte würde das Makro seine Aufgabe perfekt erfüllen nur leider haben ich mehr als 30 Aktienkurse und das bedeutet das Makro würde bei jeder Aktie Daten der Aktien davor löschen die eventuell einen Kurs haben während einer Aktie dort eine "Null" zugeordnet ist.
Ist es nicht möglich meinen Code so zu modifizieren das das Makro nur Zeilen kopiert die in der Spalte 5 Array(1, 9, 9, 9, 9, 1, 9) keinen Null wert haben?
folgender Link wird für Datenimport genutzt
https://query1.finance.yahoo.com/v7/finance/download/ADS.DE?period1=1183154400&period2=1498773600&interval=1d&events=history&crumb=Y20AjjF2yvv der Wert für crum müsste angepasst werden in der Beispieldatei crumb=Y20AjjF2yvv
mfg JonnyBank
Anzeige
AW: Externe Abfrage filtern und sortieren
11.07.2017 10:34:52
JonnyBank
Spalte 6 ^^
AW: Externe Abfrage filtern und sortieren
11.07.2017 10:43:31
JonnyBank
Nochmal zum Verständnis die Aktienkurse werden nebeneinander eingefügt (A1Datum A1Kurs A2Datum A2Kurs A3Datum A3Kurs usw.)
AW: Externe Abfrage filtern und sortieren
11.07.2017 13:38:23
fcs
Hallo JonnyBank,
Es gibt dann bei dir scheinbar für jeden Kurs ein Makro wie dein Makro "Kurs1".
In jedem Makro musst du dann eine neue Zeile einbauen - Nachbarsoalten werden dabei nicht beeinflusst, es sei denn dein Original sieht wieder anders aus als die Beispieldatei.
Gruß
Franz
AW: Externe Abfrage filtern und sortieren
11.07.2017 14:54:24
JonnyBank
Hey Franz
ich werde es mal ausprobieren und gebe dann bescheid!
Danke!
mfg Jonny
AW: Externe Abfrage filtern und sortieren
13.07.2017 08:43:03
JonnyBank
Hey Franz
das Makro funktioniert!
Danke!
mfg Jonny
Anzeige

243 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige