Avatar billede hlnviv Mester
11. maj 2009 - 13:11 Der er 11 kommentarer og
1 løsning

Hvis sætning

Hej eksperter
Skal bruge en hvis-sætning der selv kan finde det sidste tal i en kolonnne jeg har en række tal der komme ind i excel men det er ikke samme antal der komme hver gang det jeg så have excel til er at selv finde det sidste tal og trække det fra det første tal, hvis det kan lade sig gøre. F.eks der kommer 10 tal ind i en kolonne nummer 10 minnus nummer 1, men hvis der kommer 15 tal ind så er det nummer 15 - nummer 1. Håber det kan lade sif gøre
Avatar billede hellstern Nybegynder
11. maj 2009 - 15:32 #1
Hej,
Jeg vil bruge en makro, VBA, til løsningen af dette.
Du skriver ikke noget om hvilke celler data kommer ind i og om det er det samme sted hvergang.

Denne makro skriver resultatet i den celle hvor du står når makrone startes. Som den er nu forudsætter den at data row starter i cellen A2 dette kan bare ændres

Sub mcrForsteSidste()
'Variable
    Dim n As Long
    Dim varStartCelle As String

'Data Start celle - Der hvor resultatet skal skrives
    varStartCelle = ActiveCell.Address

'Denne celle er den første i datarækken
'Skal evt. ændres
    Range("A2").Select
   
    With Range("A1").CurrentRegion
        n = .Rows(.Rows.Count).Row
    End With
   
'Indsæt værdi i den aktive celle
    Range(varStartCelle).Value = Range("A" & n).Value - Range("A2").Value

End Sub

For at bruge denne makro gør går du over i VBA gøres nemmest med ALT + F11

Indsæt et nyt modul og kopier ovenstående kode ind i dette modul.
Makroen hedder; mcrForsteSidste
Når den skal afvikles

Hilsen
Tue Hellstern
Avatar billede hellstern Nybegynder
11. maj 2009 - 16:51 #2
Hej,
Jeg vil bruge en makro, VBA, til løsningen af dette.
Du skriver ikke noget om hvilke celler data kommer ind i og om det er det samme sted hvergang.

Denne makro skriver resultatet i den celle hvor du står når makrone startes. Som den er nu forudsætter den at data row starter i cellen A2 dette kan bare ændres

Sub mcrForsteSidste()
'Variable
    Dim n As Long
    Dim varStartCelle As String

'Data Start celle - Der hvor resultatet skal skrives
    varStartCelle = ActiveCell.Address

'Denne celle er den første i datarækken
'Skal evt. ændres
    Range("A2").Select
   
    With Range("A1").CurrentRegion
        n = .Rows(.Rows.Count).Row
    End With
   
'Indsæt værdi i den aktive celle
    Range(varStartCelle).Value = Range("A" & n).Value - Range("A2").Value

End Sub

For at bruge denne makro gør går du over i VBA gøres nemmest med ALT + F11

Indsæt et nyt modul og kopier ovenstående kode ind i dette modul.
Makroen hedder; mcrForsteSidste
Når den skal afvikles

Hilsen
Tue Hellstern
Avatar billede jkrons Professor
11. maj 2009 - 17:05 #3
Hvis du har dine tal i C-kolonnen (første tal i C1, så kan du bruge

=C1-INDEKS(C1:C1000;MAKS(HVIS(C1:C1000<>"";RÆKKE(C1:C1000))))

Formlen skal indtastes som en matrix-formel. Det vil sige afslut med Ctrl+Skift+Enter. Ret selv dit område til det rigtige. Hvis du ikke starter i øverste række skal du fratrække første rækkenummer - 1. Starter du fx i C4 skal din formel så sådan ud:

=C1-INDEKS(C1:C1000;MAKS(HVIS(C1:C1000<>"";RÆKKE(C1:C1000)))-3)
Avatar billede jkrons Professor
11. maj 2009 - 17:05 #4
I sidste tilfølde skulle det selvfølgelig have været

=C4-INDEKS(C4:C1000;MAKS(HVIS(C4:C1000<>"";RÆKKE(C4:C1000)))-3)
Avatar billede hlnviv Mester
12. maj 2009 - 08:43 #5
til jkrons Skrevet man. d. 11. maj 2009 kl. 17:05:55| #4
det virker helt perfekt når jeg bruger tal men i mit tilfælde skal jeg beregne på tider altså i format klokkeslæt hvis du ved hvad jeg mener, hvordan skal den så se ud
Avatar billede jkrons Professor
12. maj 2009 - 23:07 #6
Hos mig virker det helt fint med klokkeslæt. Hvad sker der hos dig?
Avatar billede hlnviv Mester
13. maj 2009 - 07:38 #7
Min formel
=C2-INDEKS(C2:C101;MAKS(HVIS(C2:C101<>"";RÆKKE(C2:C101)))-1)

Så snart jeg formater celler til klokkeslæt så skriver den bare
##############################
eller #VÆRDI! hvis ikke der er {} omkring
Avatar billede hlnviv Mester
13. maj 2009 - 08:15 #8
undskyld det er fordi det er et nigativ dato/klokkeslæt så viser den det som ##################, men hvodan vender jeg det til en positiv tid C2 vil jo altid være en tid der er mindre ind den sidste tid i rækken f.eks 14:01 - 15:31 = ################## men 15:31 - 14:01 = 01:30 , håber du forstår
Avatar billede hlnviv Mester
13. maj 2009 - 08:36 #9
Når fandt ud af at jeg skulle skifte til 1904 datoformat for at vise nigative dato, men hvad nu hvis jeg gerne vil vise det som et positiv tal
Avatar billede jkrons Professor
13. maj 2009 - 16:28 #10
Du kan bruge

=ABS(C2-INDEKS(C2:C101;MAKS(HVIS(C2:C101<>"";RÆKKE(C2:C101)))-1))

men så kandu ikke se om den første eller sidste værdi er størst.
Avatar billede hlnviv Mester
13. maj 2009 - 17:55 #11
det gør ikke noget for det er altid den første værdi der er den mindste da det er en start tid og den sidste værdi er en slut tid og regner ikke med at det gør noget hvis slut tiden er efter kl 00:00 da der jo er en dato på også, men jeg tester lige imorgen men du kan rolig sende svar og 1000 tak for hjælpen
Avatar billede jkrons Professor
13. maj 2009 - 22:51 #12
God fornøjelse :-)
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