Avatar billede christopher21 Juniormester
02. maj 2018 - 14:59 Der er 10 kommentarer

Find den tidligste dato VBA

Hej alle sammen,
Jeg har en masse datoer i kolonnen D2:D18288 og jeg skal finde den elev med den tidligste dato ved hjælp af en kode i vba. Når den dato er fundet, så skal de informationer de står i kolonnerne D, L, K, M, for den pågældende elev vises til brugeren.
Håber nogle kan hjælpe! Det skal gøres inde i VBA
Avatar billede jens48 Ekspert
02. maj 2018 - 21:40 #1
Måske kan denne makro virke som inspiration:

Sub FindMin()
Dim Mn As Integer
Mn = Application.Match(Application.Min(Range("D2:D18288")), Range("D2:D18288"), 0)
MsgBox ("For eleven med laveste dato (" & Range("D" & Mn) & ") gælder følgende data: " & Range("k" & Mn) & ", " & Range("L" & Mn) & " og " & Range("M" & Mn))
End Sub
Avatar billede christopher21 Juniormester
02. maj 2018 - 22:27 #2
Mange tak for hjælpen! Den viser den tidligste dato som værende 01-02-2010, men den tidligste dato er 31-08-1996
Avatar billede jens48 Ekspert
02. maj 2018 - 22:30 #3
Har du formateret datoen som tekst eller som dato? Den skal være formateret som dato:
Avatar billede christopher21 Juniormester
02. maj 2018 - 22:34 #4
Den er formatteret som dato, og når jeg skriver =MIN(D2:D18288) inde i excel finder den datoen 31-08-96.
Avatar billede christopher21 Juniormester
02. maj 2018 - 23:27 #5
Hvis jeg skriver:
Mn = Application.Match(Application.Max(Range("D2:D18288")), Range("D2:D18288"), 0)
Får jeg også den forkerte dato.
Men hvis jeg derimod skriver:
Mn = Application.Match(Application.Max(Range("D2:D18288")), Range("D2:D18288"))
Får jeg den rigtige, men den viser max og når jeg ændrer max til min så får jeg en type mismatch fejl :(  nogle der kan hjælpe mig med, hvad der går galt :(
Avatar billede jens48 Ekspert
02. maj 2018 - 23:50 #6
Kunne det være fordi tallet ikke er et heltal? Altså at der er timer og minutter med, selv om det ikke bliver vist?
Avatar billede christopher21 Juniormester
03. maj 2018 - 20:23 #7
Det ved jeg desværre ikke :(
Avatar billede store-morten Ekspert
03. maj 2018 - 22:53 #8
Prøv:
Sub FindMinInfo()
Dim MinDate As Date
MinDate = Format(Application.Min(Range("D2:D18288")), "dd/mm/yyyy")

With Range("D2:D18288")
    Set m = .Find(MinDate, LookIn:=xlValues)
End With

MsgBox _
"Dato: " & Range(m.Address) & vbCrLf & _
"Kol K: " & Range(m.Address).Offset(0, 7) & vbCrLf & _
"Kol L: " & Range(m.Address).Offset(0, 8) & vbCrLf & _
"Kol M: " & Range(m.Address).Offset(0, 9) _
, , "Informationer"
End Sub
Avatar billede HanneYsted Juniormester
06. maj 2018 - 12:29 #9
Jeg sidder med samme opgave, og kan heller ikke få det til at virke. Det er denne, som det er galt med ved mig:
Mn = Application.Match(Application.Max(Range("D2:D18288")), Range("D2:D18288"))

Nogen, som kan se, hvad der kan ændres?
Avatar billede aditya kin Juniormester
23. august 2018 - 16:34 #10
Very nice and interesting
https://www.welookups.com
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester