Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
versuch bitte mal diesen Teil: Sheet1.Cells(1) zu ersetzen durch Worksheets(1), wenn es das 1. Blatt ist, oder durch den Tabellen Namen wie z.B. Worksheets("Tabelle1").Cells(1). Würde mich freuen wenn es hilft.
mfg Gast 123
Registriert seit: 15.11.2018
Version(en): Office 365 Busines
Hallo,
habe es mit
sn = Worksheets(Tabelle1).CurrentRegion.Resize(, 5)
versucht, funktioniert aber leider nicht. Runtime error 9.
Andreas
Registriert seit: 29.09.2015
Version(en): 2030,5
Registriert seit: 15.11.2018
Version(en): Office 365 Busines
Danke für den Hnweis. Es sieht jetzt so aus und funktioniert.
Sub Msnb()
sn = Worksheets(1).Cells(1).CurrentRegion.Resize(, 5)
For j = 2 To UBound(sn)
If sn(j, 3) = 20 And sn(j - 1, 3) = 21 Then
sn(j - 1, 4) = sn(j, 1)
sn(j - 1, 5) = sn(j - 1, 4) - sn(j - 1, 1)
End If
Next
Worksheets(1).Cells(1).CurrentRegion.Resize(, 5) = sn
Worksheets(1).Columns(4).SpecialCells(4).EntireRow.Delete
End Sub
Vielen Dank für Deine Hilfe, snb. Ich werde mir das morgen nochmal in Ruhe anschauen und auf einer größeren Datenmenge testen.
Andreas
Registriert seit: 15.11.2018
Version(en): Office 365 Busines
Guten Morgen allerseits,
habe das Makro jetzt auf über 40.000 Datensätze angewendet und es läuft tadellos. Werde demnächst versuchen, es noch auf einige Sonderfälle hin anzupassen. Außer den Ein- und Austrittspunkten 21 und 20 gibt es nämlich noch drei weitere, wobei es z.B. möglich ist, dass ein User auf 21 eintritt und auf einem beliebigen anderen Ausgangspunkt wieder austritt. Man muss hier also wohl die IF-Abfrage entsprechend erweitern.
Des weiteren wäre es nützlich, die Datensätze, die der Abfrage nicht entsprechen, in einem getrennten Blatt zu sammeln, um sie evt. händisch zu kontrollieren.
Schließlich würde ich noch eine Umrechnung der Aufenthaltsdauer in Minuten hinzufügen.
Ich werde das jetzt mal probieren; bei Schwierigkeiten werde ich mich wieder melden.
Vielen Dank nochmals so weit.
Andreas
Registriert seit: 29.09.2015
Version(en): 2030,5
Bitte, verwende Code Tags !
Registriert seit: 15.11.2018
Version(en): Office 365 Busines
Du meinst das hier?
Code:
Sub Msnb()
sn = Worksheets(1).Cells(1).CurrentRegion.Resize(, 5)
For j = 2 To UBound(sn)
If sn(j, 3) = 20 And sn(j - 1, 3) = 21 Then
sn(j - 1, 4) = sn(j, 1)
sn(j - 1, 5) = sn(j - 1, 4) - sn(j - 1, 1)
End If
Next
Worksheets(1).Cells(1).CurrentRegion.Resize(, 5) = sn
Worksheets(1).Columns(4).SpecialCells(4).EntireRow.Delete
End Sub
Andreas
Registriert seit: 29.09.2015
Version(en): 2030,5