Feld mit Liste von Datumsbereichen abgleichen
#1
Hallo Zusammen,

nach einigen Tagen des Probierens und dem Durchsuchen des Forums und anderen Seiten, komme ich alleine leider nicht weiter und würde mich freuen wenn hier vielleicht eine Lösung zu meinem kleinen Problem zu finden ist.

Die Ausgangslage:
Ich habe zwei Tabellen entsprechend auf zwei Tabellenblättern.

"Auswertung" 
Hat zwei Spalten
A und B
In Spalte A stehen jeweils Datum und Uhrzeit im Format TT.MM.JJJJ HH:MM:SS

Spalte B soll als Ergebnis Ja oder Nein enthalten

"News"
Hat 4 Spalten
"News Name" "Datum-Zeit" "Beginn" "Ende"


Es soll nun in der Tabelle "Auswertung" in der Spalte B geprüft werden, ob der Wert in Spalte in einem der Bereiche zwischen "Begin" und "Ende" aus der Tabelle "News" liegt.

Ich hätte es eigentlich mit einer ganzen Reihe hiervon angestellt:
WENN(ODER(UND(TEXT(A1;"TT.MM.JJJJ hh:mm:ss")>TEXT('News'!C2;"TT.MM.JJJJ hh:mm:ss");TEXT(A1;"TT.MM.JJJJ hh:mm:ss")TEXT('News'!C3;"TT.MM.JJJJ hh:mm:ss");TEXT(H2;"TT.MM.JJJJ hh:mm:ss")
Das klappt auch sehr gut. Nur dummerweise habe ich etwa 2000 Zeilen mit News. Und Excel kann eine so lange formel einfach nicht verarbeiten.

Und ich hoffe natürlich dass es hier einen besseren Weg gibt das ganze auszuwerten.

Im Anhang mal eine Beispieldatei.

Vielen Dank schon Vorab

Herzliche Grüße
Sebastian


Angehängte Dateien
.xlsx   Datumsbereich - Beispiel.xlsx (Größe: 12,5 KB / Downloads: 16)
Antworten Top
#2
Moin

Code:
=WENN(SUMME((News[Beginn]<=[@[Datum Uhrzeit]])*(News[Ende]>=[@[Datum Uhrzeit]]));"JA";"")
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#3
Hi,

z.B. so:


.xlsx   Datumsbereich - Beispiel.xlsx (Größe: 13,42 KB / Downloads: 4)
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#4
Hallo,

hier noch eine Alternative:
Wirft den News-Namen raus.
Formel in Tabellenblatt Auswertung in B2 einfügen.

Code:
=WENNFEHLER(INDEX(News[News Name];AGGREGAT(15;6;ZEILE(News[News Name])/([@[Datum Uhrzeit]]>=News[Beginn])/([@[Datum Uhrzeit]]<=News[Ende]);1)-1;1);"")
Antworten Top
#5
Vielen Dank für die Antworten und die tollen Lösungen. 
Grundsätzlich funktioniert es auch. Allerdings rechnet sich excel hier in volllast der gesamten CPU einen wolf. Ich vermute das die Berechnung auch ständig überprüft wird. Ok, es sind auch 20.000 zeilen die mit je 1600 Zeilen abgeglichen werden…. 
Gibt es eine Möglichkeit das es nur einmal berechnet wird und dann nicht mehr?
Denn aktuell ist die excel so nicht nutzbar. 

Dankeschön 

Gruß 
Sebastian
Antworten Top
#6
Hallo Sebastian

Formeln haben so ihre Tücken, sie laufen immer im Hintergrund mit, benötigen halt ihre Zeit.
Abschalten geht, Excel auf manuell stellen, dann steht aber alles auf manuell. Auch nicht sinnvoll!

Probiere es bitte mal mit meiner VBA Lösung, kopiere deine Daten mal in die Beispieldatei und schau bitte mal wie lange mein Makro für alle Zeilen braucht. Prüfe ob es auch alle Daten mit "Ja" findet. Fortschritt wird in 500er Schritten angezeigt.

Würde mich freuen wenn das eine akzeptabele Lösung ist. Leider ist es eine alte Excel 2003 Version. 
Wenn alles klappt kannst du das makro ja in deine Originaldatei kopieren. Sie muss dann als xlsm gespeichert werden

mfg Gast 123


Angehängte Dateien
.xls   Datumsbereich - Beispiel.xls (Größe: 35,5 KB / Downloads: 4)
Antworten Top
#7
Hi,

teste mal, ob das schneller ist...
Code:
=LET(b;News[Beginn];e;News[Ende];d;[@[Datum Uhrzeit]];f;FILTER(e;b<=d);NICHT(ISTFEHLER(FILTER(f;f>=d))))
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#8
Hei,

möglicherweise geht es mit einem Makro schneller. Sollen alle Zeiten aus news geprüft werden, oder jeweils nur ein Zeitraum?

Das Makro prüft nur News A, müsste also ggf. angepasst werden.

PHP-Code:
Option Explicit

Sub datum_und_zeit_finden
()
    Dim lZeile As Long
    Dim sDatum 
As Date
    Dim zDatum 
As Date
    sDatum 
Tabelle2.Cells(23)
    zDatum Tabelle2.Cells(24)
    For lZeile 2 To 10
        
If Tabelle1.Cells(lZeile1) > sDatum And Tabelle1.Cells(lZeile1) < zDatum Then Tabelle1.Cells(lZeile2) = "Ja"
    Next lZeile
End Sub 
Hoffe geholfen zu haben
Hubert
Antworten Top


Gehe zu:


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