Avatar billede oyejo Nybegynder
15. april 2004 - 19:22 Der er 9 kommentarer og
1 løsning

finne element i matrix, som er 4 timer etter en tidsverdi

Har en tabell med overkrift i første celle
og tider i de andre.(tidene er sortert)

Dim vTime(1)as variant
Den henter data fra et regneark.

Nå ønkser jeg å finne det elementet som har en bestemt tidsverdi, for eksempel 4 timer eller 2 dager etter det første elementet med tid. ( celle 2)

noen som kan hjelpe?
Avatar billede kabbak Professor
15. april 2004 - 21:42 #1
Public Sub FindDatoTid()
Dim forskel As Integer, Nytid As Date
forskel = InputBox(" indtast forskel i timer" & vbLf & _
" eks.(24.5 ) = 2 dage og ½ time")
Nytid = Range("A2") + (forskel / 24)
For Each C In Range("A2:A500")
If C >= Nytid Then
Range(C.Address).Select
Exit Sub
End If
Next
End Sub
Avatar billede kabbak Professor
15. april 2004 - 21:44 #2
lidt rettet

Public Sub FindDatoTid()
Dim forskel As Integer, Nytid As Date
forskel = InputBox(" indtast forskel i timer" & vbLf & _
" eks.(24,5 ) = 2 dage og ½ time")
Nytid = Range("A2") + (forskel / 24)
For Each C In Range("A2:A500")
If C.Offset(1, 0) > Nytid Then
Range(C.Address).Select
Exit Sub
End If
Next
End Sub
Avatar billede kabbak Professor
15. april 2004 - 21:45 #3
Public Sub FindDatoTid()
Dim forskel As Integer, Nytid As Date
forskel = InputBox(" indtast forskel i timer" & vbLf & _
" eks.(48,5 ) = 2 dage og ½ time")
Nytid = Range("A2") + (forskel / 24)
For Each C In Range("A2:A500")
If C.Offset(1, 0) > Nytid Then
Range(C.Address).Select
Exit Sub
End If
Next
End Sub
Avatar billede oyejo Nybegynder
16. april 2004 - 08:31 #4
hei kabbak
mulig jeg har forklart meg feil,
men jeg tenkte å finne elementet i en matrix, ikke range.

Kanskje det er bedre å finne elementet i regnearket,
før jeg legger data inn i matrix'en?

Jeg kom på en elegant løsning med tidsforskjeller her på eksperten.
http://www.eksperten.dk/spm/482941

jeg testet denne nå, det fungerte utmerket.

MsgBox vTime(1)(2, 1)
MsgBox DateAdd("d", 2, vTime(1)(2, 1))
MsgBox vTime(2)(2, 1)
MsgBox DateAdd("h", 4, vTime(2)(2, 1))

Så da gjenstår det bare å finne riktig x i vTime(1)(x,1)
Avatar billede bak Forsker
16. april 2004 - 08:58 #5
Burde det her ikke kunne gøre det


testtime=DateAdd("d", 2, vTime(1)(2, 1))
testtime=DateAdd("h", 4, testtime)

for x = 3 to ubound(vTime(1),1)
    if vTime(1)(x,1)>= TestTime
    foundtime = vTime(1)(x,1)
    exit sub
next
Avatar billede oyejo Nybegynder
16. april 2004 - 09:10 #6
Tror vi nærmer oss en løsning.
men, det er ikke selve verdien jeg trenger.
jeg ønsker å finne x, adressen til verdien.

skal benyttes til:
Set MyRange = Range(cells(1,1), cells(x,1))
Avatar billede oyejo Nybegynder
16. april 2004 - 09:18 #7
slevfølgelig:
jeg kan jo benytte

for x = 3 to ubound(vTime(1),1)
    if vTime(1)(x,1)>= TestTime
    lAdress = x+2
    exit sub
next

jeg stiller for enkle spørsmål uten å tenke :-)
Det er så enkelt å få svar her
Avatar billede bak Forsker
16. april 2004 - 09:40 #8
:-)
Avatar billede oyejo Nybegynder
16. april 2004 - 09:54 #9
Da trenger jeg kun hjelp til å bli av med nogle point's
smid lige et par svar,
oyejo
Avatar billede bak Forsker
16. april 2004 - 09:56 #10
ok
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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