Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellenblatt auswerten Werte kopieren
#1
Geschätztes Forum,

ich benötige Hilfe bei der Auswertung einer Tabelle.

Die datei Rohdaten erstelle ich aus einer pdf-Datei. Nach kopieren der benötigten Daten, Umwandlung in .txt und öffnen
mit Excel, bekomme ich die Daten so aufbereitet hin.
Meine Absicht ist, die Rohdaten in Analyse neu zu überführen. Für Analyse neu habe ich ein Auswertemakro.
Bisher muss ich die Daten händisch eintragen.

In Rohdaten stehen die Flugziele mit Code und Land (Beispiel: Zeile 1, 11 etc.)
In Spalte A, jeweils unter den Flugziel stehen die jeweiligen Flugtage in verschiedenen Formaten.
Beispiele 1xx45xx: die Zahlen stehen für die Wochentage 1= Montag, 2=Dienstag etc.
In der Spalten F steht das Anfangsdatum des Zeitraumes in dem am jeweiligen Flugtag ein Flug stattfindet.
In Spalte G das Enddatum des Zeitraumes.

Der Code müsste folgendes tun:
In "Rohdaten" die Flugziele herausfiltern und in "Analyse neu" kopieren. Ich habe ich der "Analyse neu" händisch eingetragen
wie das aussehen soll.
Dann soll "Rohdaten" Spalte A nach den Flugtagen in Abhängigkeit vom Zeitraum aus den Spalten F und G ausgewertet werden. In "Analyse neu" soll
dann am jeweiligen Tag zum jeweiligen Flugziel der Inhalt von "Rohdaten" Spalte B eingetragen werden.

Wer weiß Rat?

Gruß

tmessers


Angehängte Dateien
.xlsm   Analyse neu.xlsm (Größe: 100,65 KB / Downloads: 3)
.xlsx   Rohdaten.xlsx (Größe: 12,93 KB / Downloads: 5)
Antworten Top
#2
Hallo,

der folgende Code liest die Namen der Flughäfen aus der Datei "Rohdaten":


Code:
Sub Fen()
F0 = Application.Transpose(Range("A1:A100"))
For i = 1 To UBound(F0)
   If IsEmpty(F0(i)) Then F0(i) = "xx"
Next i
F1 = Filter(F0, "xx", False)
Debug.Print Join(F1, ", ")
End Sub


Zu Testzwecken wird ins Direktfenster geschrieben.

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • tmessers
Antworten Top
#3
@Fennek

Danke, das passt. Im Direktfenster werden die Namen ausgeworfen.
Wie bekomme ich die Namen nun einzeln in Spalten geschrieben?
Antworten Top
#4
Hallöchen,

im Code von Fennek hast DU schon eine Schleife, wo er die Einträge einzeln abarbeitet
Code:
For i = 1 To UBound(F0)
   If IsEmpty(F0(i)) Then F0(i) = "xx"
Next i

Ausgeben im Direktfenster tut er die Daten mit
Code:
F1 = Filter(F0, "xx", False)
Debug.Print Join(F1, ", ")

In eine Zelle schreibt man Daten so:
Cells(1,1).Value = "irgendwas"

Du könntest jetzt in einer Schleife die Einträge einzeln eintragen
Code:
For i = 1 To UBound(F1)
   Cells(i,1).Value = F0(i) 'Eintraege in Spalte A ab Zeile 1
Next i
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • tmessers
Antworten Top
#5
Hallo zusammen,

ich wage nochmal einen neuen Versuch.

Ich habe die Rohdaten angepasst und gleich in das Worksheet integriert. Mit Eurer Hilfe habe ich einige Probleme
bereits lösen können und weitere Probleme durch eigenen Code lösen können.

Leider ist mein Code noch problembehaftet.
Zwei Probleme bestehen noch:

1) Im Code an der Stelle 'XXXXX scheint der Fehler zu liegen. Der Code vergleicht nicht die betreffende Zeile in Spalte A aus Rohdaten
    mit der Spalten aus Ankunft. Es scheint so als übernimmt er die Daten aus Ankunft/Spalte E für die ganze Tabelle

2) Für die Abhängigkeit vom Datum, also den Spalten Rohdaten/G und I ist mich noch keine Lösung eingefallen

Gruß

tmessers


Angehängte Dateien
.xlsm   17-02-06 Analyse.xlsm (Größe: 156,49 KB / Downloads: 5)
Antworten Top
#6
Hallöchen,

erst mal ein paar grundsätzliche Hinweise.

Im Code weist Du die Blätter Variablen zu, z.B.
Set wsZ = Worksheets("Ankunft")

An anderen, nachfolgenden Stellen programmierst Du
Sheets("Ankunft"). ...

Das brauchst Du nicht. Hier reicht stattdessen
wsZ. ...

Ich habe da nicht analysiert, welches Blatt bei der codeausführung aktiv ist. In der Regel programmiert man bei häufigen wechselseitigen Zugriffen das Blatt dazu. So eine Zeile
For Each Zelle In Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
ist entsprechend risikobehaftet und man weiß auch nicht gleich, um welches Blatt es eigentlich geht. Ich vermute, dass es dabei um das Blatt Rohdaten geht.
Weiter oben steht
Set wsQ = Worksheets("Rohdaten")
Ich würde die Schleifa also so programmieren:
For Each Zelle In wsq.Range(wsq.Cells(1, 2), wsq.Cells(Rows.Count, 2).End(xlUp))
Du siehst, ich habe das wsq auch innerhalb der Range-Klammer zu den Cells geschrieben...

Später hast Du
          Sheets("Ankunft").Select
               For Each Spalte In Sheets("Ankunft").Range(Cells(17, 5), Cells(17, _
               Columns.Count).End(xlToLeft))

Wenn Du genau weist. dass das Blatt Ankunft aktiv ist, brauchst Du das in der For-Zeile nicht dazu zu schreiben. Ich würde aber die andere Variante mit wsZ und ohne Selectieren bevorzugen. Würde dann so aussehen:
               For Each Spalte In wsZ.Range(wsZ.Cells(17, 5), wsZ.Cells(17, _
               Columns.Count).End(xlToLeft))

Du musst dann in den folgenden Zeilen aufpassen, dass ggf. wsZ vor den Zellenangaben steht .
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • tmessers
Antworten Top
#7
Flugziele:

Code:
Sub M_snb()
    MsgBox Join(Filter([transpose(if(left(B1:B200,1)="(",A1:A200))], "False", 0), vbLf)
End Sub

Ins Arbeitsblatt:
Code:
sub M_snb()
   Filter([transpose(if(left(Rohdaten!B1:B200,1)="(",Rohdaten!A1:A200))], "False", 0)
   sheets("Ankunft").cells(17,5).resize(,ubound(sn)+1)=sn
End Sub
Antworten Top
#8
Hallo snb,

das war zu schnell aus der Hüfte geschossen :88:

so sollte es sei, denke ich.
 

Code:
Sub M_snb()
  sn = Filter([transpose(if(left(Rohdaten!B1:B200,1)="(",Rohdaten!A1:A200))], "False", 0)
  Sheets("Ankunft").Cells(16, 5).Resize(, UBound(sn) + 1) = sn
End Sub



Aber das "False" wird mit in die Tabelle geschrieben.
Hier ein Ausschnitt:

Arbeitsblatt mit dem Namen 'Ankunft'
 EFGHIJKLMNO
16AntFalschFalschFalschFalschFalschFalschFalschBarFalschBel
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Gruß Atilla
Antworten Top
#9
@Att

Verstehst du kein Englisch ?


Code:
sub M_snb()
   Filter([transpose(if(left(Rohdaten!B1:B200,1)="(",Rohdaten!A1:A200))], "Falsch", 0)
   sheets("Ankunft").cells(17,5).resize(,ubound(sn)+1)=sn
End Sub

Wer war zu schnell ?? :D
Antworten Top
#10
(08.02.2017, 10:03)snb: schrieb: Wer war zu schnell ?? :D

 hmm, ich denke immer noch Du. :19:

Was steht in "sn"?
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste