Excel: Probleme bei Webabfrage / Zahlen aus einem Satz auslesen...

  • #1
P

Perle

Bekanntes Mitglied
Themenersteller
Dabei seit
12.01.2002
Beiträge
208
Reaktionspunkte
0
Hallo!

Hab da ein kleines Problem...

Es stehen 156 auf der Liste, wovon 35 Stück bla bla bla.

Nachdem ich per Webabfrage diese Zeile (nur ein Beispiel :)
eingelesen habe, möchte ich die darin vorkommenden Zahlen weiter
verarbeiten. Es wird immer der gleiche Satz sein, nur die Zahlen
ändern sich.

Wie kann ich diese beiden Werte auslesen und fortlaufend mit Datum
in eine Tabelle einfügen?

Bis jetzt läuft das so, dass bei jedem öffnen die Abfrage gestartet
wird und ich dann per Copy&Paste die Werte in eine Tabelle übertrage.
Aber das wird sich doch sicher auch automatisieren lassen, oder???

Gruß,
Perle
 
  • #2
Das ist knifflig, aber möglich. Du hast den von dir vorgegebenen Text in Zelle A1:
Es stehen 156 auf der Liste, wovon 17 Stück bla bla bla

Das Leerzeichen vor der ersten auszulesenden Zahl steht an 10. Stelle des Satzes (Leerzeichen zählen auch!).
In Zelle B1 kommt folgende Formel:
=GLÄTTEN(TEIL(A1;10;FINDEN( ;A1;10+1)-10))

Die Anzahl der Zeichen zwischen der ersten und der zweiten auszulesenden Zahl ist 20 (ohne das Leerzeichen nach 156 und ohne das Leerzeichen vor 17!).
In Zelle C1 kommt folgende Formel:
=GLÄTTEN(TEIL(A1;(FINDEN( ;A1;FINDEN( ;A1;10+1)+20+1));FINDEN( ;A1;FINDEN( ;A1;FINDEN( ;A1;10+1)+20+2))-(FINDEN( ;A1;FINDEN( ;A1;10+1)+20+1))))

Erläuterung: Zwischen den Anführungszeichen innerhalb der Formeln befindet sich jeweils ein Leerzeichen!

Wenn in dem Satz noch mehr Zahlen vorkommen, die auszulesen sind, wird es richtig abenteuerlich. Für jede weitere auszulesende Zahl verdreifacht sich die Länge der Formel jeweils. Allerdings können die Zahlen eine beliebige Länge haben und auch Dezimalstellen enthalten.
 
  • #3
Danke, damit komm ich sicher weiter. Die Länge ist auch ok - mehr als 2 Zahlen sind es nicht.

Und wie können die Werte von B1 und C1 in eine übersichtliche Tabelle übertragen werden? Z.B. Wert von B1 nach E3 - beim nächsten öffnen nach E4, dann nach E5, E6 usw. und in Spalte D immer das aktuelle Datum davor???

Gruß,
Perle
 
  • #4
???
Wieso nach E3, E4, E5 usw.? Was soll das für einen Sinn haben?
Warum kannst du den jeweils neuen Satz nicht in A2 kopieren und die Formeln in Spalten B und C runterziehen? Dann steht der nächste Tag in der 2. Zeile und am 3. Tag alles in die 3. Zeile usw.?

Das mit dem Datum automatisch davor ist auch möglich, aber das kann ich nicht aus dem Stegreif. Das ist ein Fall für den Matjes (). Ich schau trotzdem mal ob ich was finde. Da war mal was und es hat mit dem Tabellen-Code zu tun. Schau mer mal 8)
 
  • #5
klexy schrieb:
???
Wieso nach E3, E4, E5 usw.? Was soll das für einen Sinn haben?
Warum kannst du den jeweils neuen Satz nicht in A2 kopieren und die Formeln in Spalten B und C runterziehen? Dann steht der nächste Tag in der 2. Zeile und am 3. Tag alles in die 3. Zeile usw.?
E3, E4, E5 usw. war nur ein Beispiel. So ungefähr soll das mal aussehen:

excel03.jpg


Also die Zahlen aus dem Satz auslesen klappt super - Danke für 80%weniger Arbeit!Das mit dem fortlaufenden Datum bekomm ich hin, wenn ich weiß wie das andere funtzt.
Die Zahlen auf Blatt_01 in Zeile 2 stammen von deinen Formeln, bzw. von der Webabfrage - die ist aber auf nem anderen (ausgeblendeten Hilfs-)Blatt.

In Zeile 2 standen vorher die Sätze die die Webabfrage geliefert hatte. Mit deinen Formeln hab ich das jetzt schon mal in Form gebracht. Bisher mußte ich noch einen Teil abtippen und den Rest per Copy&Paste täglich eine Zeile weiter unten einfügen, Datum dazu, fertig.

Das ging auch alles gut, solange es nur ein Blatt war. Mittlerweile Sind es aber schon 20 Blätter - also 20 Webabfragen die zusammen 100 Werte lieferten. Das waren 100 Einträge, täglich, per Hand! Da ich jetzt weiß wie man die Zahlen extrahieren kann, wären nur noch 20 Zeilen zu kopieren, aber das geht doch bestimmt noch einfacher.

Fehlt mir also nur noch die eine Lösung:
In A2 kommt noch =JETZT() - und jedesmal wenn sich A2 ändert, soll Excel die Inhalte von den Zellen A2-G2 in die Zellen A16-G16 eintragen. Beim nächsten mal in die Zellen A17-G17, usw.

Ist doch eigentlich nur ne Liste - hätte nicht gedacht dass das so verzwickt ist...

Gruß,
Perle
 
  • #6
Aha!
Du hast also 20 Abfragen, aus denen 20 mal x Zahlen ausgelesen werden, die danach in 20 Tabellen kopiert werden müssen. Und zwar immer unten hin.
Wie kommen die Webabfragen (was ist das überhaupt?) in die Tabelle?
Wenn das wirklich täglich ist, kann man sich den Zauber mit dem Datum schenken und einfach bei jeder vollen Zeile einen RTag zur vorigen Zeile dazu zählen. Das wäre wesentlich einfacher zu lösen. Auch wenn nur ab und zu mal ein Tag ausfällt, hätte ich schon eine Idee.

Kannst du mir die Datei schicken? Mit ca. 5 Beispielen pro Seite.
Ich überleg mir dann was. Das kann aber ein paar Tage dauern.
 
  • #7
Hallo!

Klar, schick ich Dir - kann auch etwas dauern :)

Mit Webabfrage mein ich dies hier:
Daten > Externe Daten > Neue Webabfrage...

Gruß,
Perle
 
  • #8
Das mit der Webabfrage kapier ich nicht. Bei mir geht da der Office-Ordner auf. Da ist aber nix drin. Schick mir bitte auch so eine Webabfrage. Damit ich das auch mal gesehen hab, wenn ich schon mit so wilden Formeln um mich schmeiß
;D
 
  • #9
So, Datei ist unterwegs....

Wieso sich bei Dir der Office-Ordner öffnet weiß ich auch nicht. Hab die Datei mal auf nem Excel2000 geöffnet, an dem seit der Installation noch keine Einstellungen geändert wurden.
Erst fragt Excel ob Du die Abfrage aktivieren willst (ähnlich wie bei nem Makro), dann meldet sich evtl. die Firewall weil Excel sich gleich die Daten holt und dann öffnet sich noch die Symbolleiste Externe Daten (Ansicht > Symbolleisten > Externe Daten).

Eigentlich ist es ja nur der Import einer HTML-Seite, oder nur Teile dieser.

Gruß,
Perle
 
  • #10
Hallo nochmal...

Für gespeicherte Webabfragen gibt es sogar ein eigenes Verzeichnis (WinXP+2K):

C:\Dokumente und Einstellungen\--Benutzer--\Anwendungsdaten\Microsoft\Abfragen

Schau doch mal rein, vielleich liegt ja schon eine drin und Du kennst es nur unter einem anderen Namen oder weißt es nur nicht mehr...

So, und jetzt wünsch ich Dir noch viel Spass beim wilde-Formel-schmeißen :)

Gruß,
Perle
 
  • #11
Hmmmmmm...
Gibt es irgendwo ein Modell, an dem man Webabfrage ausprobieren kann? Aus der Excel-Hilfe werd ich nicht schlau.
 
  • #12
Die Datei die ich Dir gesendet habe IST ein Modell. Die Webabfrage zieht die Daten aus ner HTM-Seite die ich extra für dich geschrieben habe :)

Ich mußte sogar meinen eigenen Webspace dafür hernehmen ;D ;D ;D

/edit
Hier für alle:


Gruß,
Perle
 
  • #13
Hab eben deine Mail gelesen. Ich glaub das funtzt mit dem 97er nicht.

Schau morgen wieder rein, dann zeig ichs Dir.

Hab noch die ganze Nacht Zeit zum Screenshots machen ;)
 
  • #14
Ich glaube, ich hab's kapiert. :) :) :)

Jetzt brauch ich nur noch ein realitätsnahes Beispiel aus deinem Gemischtwarenladen. Änder einfach alle Vokale in Konsonanten wenn's geheim ist und spiel es auf deine Website .
Haben alle 20 Quellen dieselbe Struktur? Da hätte ich eine weitere Idee zur Vereinfachung.

Wie man sich allerdings eine Website nur für blöde Excel-Beispiele leisten kann, ist mir schon ein Rätsel... ???
 
  • #15
Na, dann lass ich das mit den Screenshots mal :)

Das Beispiel ist schon absolut Realitätsnah. Nur die URL und der Text sind anders. Vielleicht auch die eine oder andere Zelle etwas weiter links oder rechts...aber ansonsten passt das schon.
Ist auch kein großes Geheimnis, aber solange niemand die Datei und die URL hat, und keiner weiß um was es geht wenn er zufällig mal auf einer der Seiten landet, muß die Seite nicht mit nem Passwort versehen werden - wüsste auch nicht ob es dann noch machbar wäre - deshalb :-X

klexy schrieb:
Haben alle 20 Quellen dieselbe Struktur?
Jep, einziger unterschied ist vk1.htm, vk2.htm, ..., und die Zahlen natürlich ;D
Aber es können auch mal mehr als 20 Quellen werden - sollte also erweiterbar sein.

klexy schrieb:
Wie man sich allerdings eine Website nur für blöde Excel-Beispiele leisten kann, ist mir schon ein Rätsel... ???
Das waren meine ersten Schritte ins Internet - ist mittlerweile nur noch zum testen. Und die Site kostet ja nicht mal 5 Euro im Jahr....

Wer möchte kann sich auch ohne die Datei beteiligen! ;D
Gesucht ist die Lösung für folgendes Problem:


A1: =Heute()

B1: =25
nehmen wir einfach an dies ist das Ergebnis einer Formel und ändert sich immer wieder - bleibt also nicht immer bei 25, sonst wärs ja einfach ;)

Aufgabe:
Wenn sich in A1 etwas ändert, also beim aktualisieren oder öffnen des Dokuments, soll das Ergebnis von A1 (Datum) nach C1 und das Ergebnis von B1 (Zahl) nach D1 geschrieben werden. Und sobald sich A1 jetzt wieder ändert, sollen die Ergebnisse nicht wieder nach C1 und D1 kopiert werden, sondern eine Zeile drunter nach C2 und D2. Bei der nächsten Änderung nach C3 und D3, und so weiter....

*mal-laut-denk*
Wenn A1 < oder > wobei das Datum wohl selten weniger werden wird
Dann (A1 nach (Spalte C, erste freie Zelle)) und (B1 nach (Spalte D, erste freie Zelle))

Kann das jemand übersetzen oder schreib ich etwa schon wirres Zeug? :eek:

Naja, so sollte es dann ungefähr Aussehen:

01.09.2003 | 5987
03.09.2003 | 548
06.09.2003 | 2039
07.09.2003 | 874
08.09.2003 | 1235
11.09.2003 | 25

Gruß,
Perle
 
  • #16
Der Hund liegt im Code des Excel-Tabellenblatte begraben:
Rechter Mausclick auf den Blattnamen, Code anzeigen. Dann kommt was ähnliches wie ein Makro zum Vorschein.
Kennst du dich mit VB soweit aus? Ich versuch mal, die entsprechenden Befehle reinzufriemeln. Kann aber nix versprechen. Schau mer mal, dann seh mer schon.
 
  • #17
Ich hab's! :) :) :) (nach nur 7 Stunden tüfteln)
Ich mußte dazu deine Tabellenstruktur etwas umschmeißen, aber wichtig ist, was hinten rauskommt.

Deine Ergebnistabelle ist jetzt in Blatt VK1. Hier ist auch ein Button mit der Aufschrift Los! Dieser aktualisiert die Webabfrage in Blatt VK1_web auf und schreibt nichts in Zelle F2. Das klingt komisch, ist aber so. Es ist nämlich ein aktives Nichts. Klingt auch komisch, ist aber wurscht.

Sobald in F2 dieses Nichts reingeschrieben wurde, wird der Code des Tabellenblatts angestoßen (anzuschauen mit rechtem Mausklick in den Namen des Tabellenblattes). Der Code bewirkt, daß das Datum eingetragen wird und die Werte alle in die Ergebnistabelle eingetragen werden.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 7 And Target.Row = 2 Then
 ->wenn sich auf F2 was tut (angestoßen vom Los!-Button)
  Range(A2).Select
  ActiveCell.FormulaR1C1 = Date->schreib das Datum nach A2
   Sheets(VK1).Select
   Selection.End(xlToLeft).Select
   Selection.End(xlToLeft).Select
   Selection.End(xlToLeft).Select
   Selection.End(xlToLeft).Select
   Selection.End(xlUp).Select
   Selection.End(xlUp).Select
   Selection.End(xlUp).Select
   Selection.End(xlDown).Select
   ActiveCell.Offset(1, 0).Select
   Sheets(VK1_web).Select
   Range(A2).Select
   Selection.Copy
   Sheets(VK1).Select
   Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
   Sheets(VK1_web).Select
   ActiveCell.Offset(0, 1).Select
   
  ->das wird dann mit jeder folgenden vollen Zelle der soeben beschriebenen Zeile gemacht
  ->Das funktioniert nicht, wenn mal kein Alu vorhanden ist,
  ->es funktioniert aber wenn Null Alu vorhanden ist
  ->- das kommt auf die Wertübermittlung deiner Abfrage an
   Do While ActiveCell.Value <> 
   Selection.Copy
   Sheets(VK1).Select
   ActiveCell.Offset(0, 1).Select
   Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
   Sheets(VK1_web).Select
   ActiveCell.Offset(0, 1).Select
   Loop
   Application.CutCopyMode = False
   ActiveCell.Offset(0, -1).Select
   Range(A1).Select
   Sheets(VK1).Select
Call [Modul1].Berechnen
End If
End Sub
Leider wird in der Ergebnistabelle der Maximalwert nicht neu berechnet. Dazu mußte ich als Trick aus dem Code ein normales Makro aufrufen.
Code:
Sub Berechnen()
  ->Berechnen anstoßen
    Cells.Select
    Selection.Replace What:=1, Replacement:=1, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Selection.Replace What:=2, Replacement:=2, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Selection.Replace What:=3, Replacement:=3, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Selection.Replace What:=4, Replacement:=4, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Selection.Replace What:=5, Replacement:=5, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Selection.Replace What:=6, Replacement:=6, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Selection.Replace What:=7, Replacement:=7, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Selection.Replace What:=8, Replacement:=8, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Selection.Replace What:=9, Replacement:=9, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Selection.Replace What:=0, Replacement:=0, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   Range(A1).Select
   Selection.End(xlDown).Select
   ActiveCell.Offset(1, 0).Select
End Sub
Weiß jemand warum ich diese Befehle nicht in den Tabellen-Code eingeben konnte?

Die Musterdatei kommt per Mail.
 
  • #18
Hi!

7 Stunden :eek: :eek: :eek:
Vielen Dank für deine mehr als umfangreiche Hilfe!

Muss mir dafür allerdings am Wochenende etwas Zeit für nehmen, denn im moment hab ich alle Hände voll zu tun - darf gerade alle Rechner & Lan neu aufsetzen :'(

Gruß,
Perle
 
  • #19
Hab ja selber was dabei gelernt. Mir geht es um die sportliche Herausforderung.
Hoffentlich kann mir jemand meine Frage beantworten, warum ich nicht alles in den Tabellen-Code eingeben konnte (siehe mein voriges Posting), sondern ein zusätzliches Makro aus dem Tabellen-Code heraus aufrufen musste.
 
Thema:

Excel: Probleme bei Webabfrage / Zahlen aus einem Satz auslesen...

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben