OK. :19:
Code:
sub M_snb()
sn=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
Mein Excel produziert 'False'; das filltere ich aus mit
Code:
filter(..,"False",0)
Das kannst du anpassen für deutschsprachige Excels.
@snb und atilla
Danke für Eure Unterstützung.
Das ist ein schöner Code.
Vielleicht fällt Euch auch ein Lösung zu meinem anderen Problemen ein.
Ich habe den Code noch angepasst und versucht die Datumskomponente einzubauen.
ub Auswertung_E()
Dim Tag1 As String
Sheets("Rohdaten").Select
For Each Zelle In Range(Cells(3, 9), Cells(Rows.Count, 9).End(xlUp))
If Cells(Zelle.Row, 9) = "" Then
Cells(Zelle.Row, 9) = Cells(Zelle.Row, 7)
End If
Next Zelle
'____Code aus Forum von Uwe aka Kuwer aus diesem Forum________
Dim wsQ As Worksheet, wsZ As Worksheet
Set wsQ = Worksheets("Rohdaten")
Set wsZ = Worksheets("Ankunft")
Call Tabelle1.M_snb
wsZ.Select
letztezeile = wsZ.Cells(Rows.Count, 5).End(xlUp).Row
letztespalte = wsZ.Cells(19, Columns.Count).End(xlToLeft).Column
wsZ.Range(Cells(19, 5), Cells(letztezeile, letztespalte)).ClearContents
'______Wochentag suchen__von Uwe aka "Kuwer" aus Forum
' 1= Mo, 2=Di etc.
Dim lngZ As Long
Dim strZelle As String
For Each Zelle In wsQ.Range(wsQ.Cells(1, 2), wsQ.Cells(Rows.Count, 2).End(xlUp))
For lngZ = 1 To 7
If Mid(Zelle, lngZ, 1) = lngZ Then
'____ab hier mein Code__________
Sheets("Ankunft").Select
For Each Spalte In wsZ.Range(wsZ.Cells(17, 5), wsZ.Cells(17, _
Columns.Count).End(xlToLeft))
If wsZ.Cells(17, Spalte.Column) = _
wsQ.Cells(Zelle.Row, 1) Then 'XXXXXX
For Each Zeile In wsZ.Range(wsZ.Cells(19, 3), _
wsZ.Cells(Rows.Count, 3).End(xlUp))
If wsZ.Cells(Zeile.Row, 3) = lngZ Then
'Ab hier soll der Datumsbereich berücksichtigt werden
If wsZ.Cells(Zeile.Row, 2) <= wsQ.Cells(Zelle.Row, 7) Then
If wsZ.Cells(Zeile.Row, 2) >= wsQ.Cells(Zelle.Row, 9) Then
wsZ.Cells(Zeile.Row, Spalte.Column) = wsQ.Cells(Zelle.Row, 3)
End If
End If
wsZ.Cells(Zeile.Row, Spalte.Column) = _
wsQ.Cells(Zelle.Row, 3)
End If
Next Zeile
End If
Next Spalte
End If
Next lngZ
Next Zelle
End Sub
Leider funktioniert er nicht. Weiß wer wie ich das Problem lösen kann?
Hallöchen,
was bedeutet denn "leider funktioniert er nicht" ?
Ich würde z.B. mal die Überprüfung nutzen, den Code schrittweise laufen lassen und schauen, was hier steht
If wsZ.Cells(Zeile.Row, 3) = lngZ Then
und hier
Zeile.Row
und hier
If wsZ.Cells(Zeile.Row, 2) <= wsQ.Cells(Zelle.Row, 7) Then
und hier
If wsZ.Cells(Zeile.Row, 2) >= wsQ.Cells(Zelle.Row, 9)
und ggf. auch noch in die betreffenden Zellen schauen...
Ich glaube ich bin der Lösung auf der Spur.
Dabei ist ein Problem aufgefallen.
Im Tabellenblatt "Rohdaten" habe ich das Datum auf die Schreibweise TT.MM.JJJJ festgelegt.
Im Tabellenblatt "Ankunft" liegt das Datum in der selben Schreibweise vor.
Lasse ich den Code schrittweise durchlaufen, fällt auf, dass bei Zeile.Row das Datum so ausgegeben wird TT.MM.JJJJ. Bei Zelle.Row so "TT.MM.JJJJ". Also ohne und mit "".
Das führt dazu, dass keine Übereinstimmung gefunden wird.
Woran könnte das liegen?
Hallöchen,
das liegt daran, dass es auf dem einen Blatt kein richtiges Datum ist. Wo kommen denn die Daten her? Ich sehe da auf dem Blatt auch keine Jahreszahl ...
(16.02.2017, 19:19)schauan schrieb: [ -> ]Hallöchen,
das liegt daran, dass es auf dem einen Blatt kein richtiges Datum ist. Wo kommen denn die Daten her? Ich sehe da auf dem Blatt auch keine Jahreszahl ...
Die Zahlen im Sheet "Rohdaten" sind aus einer txt-Datei. Ich habe einen Code geschrieben, der die Jahreszahl hinzufügt. Die Zellen habe ich als Datum formatiert.
Hallo,
hab keinen entsprechenden Code gefunden
(16.02.2017, 22:18)schauan schrieb: [ -> ]Hallo,
hab keinen entsprechenden Code gefunden
Sheets("Rohdaten").Activate
For Each Zelle In Range(Cells(1, 9), Cells(Rows.Count, 9).End(xlUp))
If Cells(Zelle.Row, 9) <> "" Then
If Not Cells(Zelle.Row, 9) Like "*2017" Then
Cells(Zelle.Row, 9).Value = Cells(Zelle.Row, 9).Value & "2017" And _
Cells(Zelle.Row, 9).Value = DateValue(Cells(Zelle.Row, 9).Value)
End If
End If
Next Zelle
For Each Zelle1 In Range(Cells(1, 11), Cells(Rows.Count, 11).End(xlUp))
If Cells(Zelle1.Row, 11) <> "" Then
If Not Cells(Zelle1.Row, 11) Like "*2017" Then
Cells(Zelle1.Row, 11).Value = Cells(Zelle1.Row, 11).Value & "2017" And _
Cells(Zelle.Row, 9).Value = DateValue(Cells(Zelle.Row, 9).Value)
End If
End If
Next Zelle1
End Sub
Das ist der Code, der in Rohdaten die Jahreszahl einfügt.
Hallöchen,
glaube ich nicht ganz. Lasse mal die beiden And _ weg, damit der Code erst mal läuft.
Dann änderst Du die Spalten 9 und 11, aber die 11 nur zur "Hälfte - schaue mal dorthin, in der zweiten Anweisung steht wieder Spalte 9. Die 11 ist übrigens leer, müsste eigentlich 7 sein ...
Bei den Rohdaten beziehst Du Dich im Vergleich auf
wsQ.Cells(Zelle.Row, 7)
und
wsQ.Cells(Zelle.Row, 9)
In der 9 wird mir korrekt ein Datum angezeigt, in der 7 aber ein Text. Die 7 wurde ja auch nicht geändert, sondern nur die 9 und der Versuch mit der 11 ...