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.
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:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28 • tmessers
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
07.02.2017, 18:28 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2017, 18:29 von schauan.)
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:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • tmessers
07.02.2017, 18:49 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2017, 18:49 von snb.)
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
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:
08.02.2017, 10:03 (Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2017, 10:03 von snb.)
@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