Avatar billede FinnLauridsen Forsker
13. maj 2018 - 09:17 Der er 14 kommentarer og
5 løsninger

Log

Hvis jeg i en celle har en dato Eks. B2  og i C2,D2 osv.har 12 andre celler med  måneder, fra Jan til Dec kan man så lave en formel i hver måned
ala.
I eks.  dato i C2  er  05-01-2018
=Hvis(B2 er mellem 01 og 31- jan; så skriv datoen fra B2, eller skriv ingenting)
denne formel skal så gentages for alle måneder D2, E2, F2  osv.
dette skulle så gerne ligne en slags log hvor jeg kan se hvad måned der har været aktivitet,
Hvis datoen  i C2 ændres til en anden måned eks. 13-05-2018 så skal datoen stadigvæk huskes for jan måned,
Er der hjælp at få til dette
Avatar billede jkrons Professor
13. maj 2018 - 09:59 #1
Du skal nok ud i noget VBA. En formel vil give et andet resultat, hvis du ændrer på de data, der indgår. Så hvis der i dag er aktivitet i fx Februar, så vil denne aktivitet forsvinde, når du taster en dato i marts.
Avatar billede FinnLauridsen Forsker
13. maj 2018 - 10:04 #2
VBA er ikke min stærke side , så hvis der var en lille hjælp at få
Avatar billede jkrons Professor
13. maj 2018 - 10:12 #3
Noget i denne stil burde kunne føre dig på sporet

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2")) Is Nothing Then
        maaned = Month(Target.Value)
    Else
        Exit Sub
    End If
Select Case maaned
    Case Is = 1
        Target.Offset(0, 1).Value = Target.Value
    Case Is = 2
        Target.Offset(0, 2).Value = Target.Value
    Case Is = 3
        Target.Offset(0, 3).Value = Target.Value
    Case Is = 4
        Target.Offset(0, 4).Value = Target.Value
    Case Is = 5
        Target.Offset(0, 5).Value = Target.Value
    Case Is = 6
        Target.Offset(0, 6).Value = Target.Value
        Case Is = 7
        Target.Offset(0, 7).Value = Target.Value
    Case Is = 8
        Target.Offset(0, 8).Value = Target.Value
    Case Is = 9
        Target.Offset(0, 9).Value = Target.Value
    Case Is = 10
        Target.Offset(0, 10).Value = Target.Value
    Case Is = 11
        Target.Offset(0, 11).Value = Target.Value
    Case Is = 12
        Target.Offset(0, 12).Value = Target.Value
End Select
End Sub
Avatar billede FinnLauridsen Forsker
13. maj 2018 - 10:40 #4
som sagt mit kendskab til VBA er ikke stort, så kunne der komme en lille forklaring  hvad der sker ?
Avatar billede jkrons Professor
13. maj 2018 - 11:14 #5
Koden skal ligge i arkets kodemodul.

Når du taster en dato i A2 overføres denne dato til en af cellerne B2 til M2 afhængig af måneden på den dato, du har tastet i A2.

De første linjer undersøger om der er tastet i A2. Hvis ikke afbrydes funktionen. Select Case undersøger så, hvilken måned der er tastet i, og forskyder i henhold til dette, og kopiere så den indtastede dato til den rigtige måned. B2 er januar, C2, februar og så fremdeles.
Avatar billede FinnLauridsen Forsker
13. maj 2018 - 11:57 #6
Kan ikke få det til at køre, skal datoen være i et bestemt format ?
jeg kan heller ikke få koden til at blive i modulet ( excel 2016 DK)
Jeg går ned på Ark fanen, vis programkode ,indsæt , module, kopierer så din formel over, lukker på rødt kryds
skriver så en dato i A2 , men der sker intet
Avatar billede jkrons Professor
13. maj 2018 - 12:12 #7
Her er en udvidet kode, der tjekker om det indtastede er en dato. Prøv om den virker. Datoen skal tastes i Excels datorformat, altså dd-mm-åååå.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A2")) Is Nothing Then
    If IsDate(Target.Value) = False Then
        MsgBox "Der skal indtastes en dato i korrekt format: ""dd-mm-åå""", vbCritical + vbOKOnly
        Range("a2").Activate
        Exit Sub
    End If
        maaned = Month(Target.Value)
    Else
        Exit Sub
    End If
Select Case maaned
    Case Is = 1
        Target.Offset(0, 1).Value = Target.Value
    Case Is = 2
        Target.Offset(0, 2).Value = Target.Value
    Case Is = 3
        Target.Offset(0, 3).Value = Target.Value
    Case Is = 4
        Target.Offset(0, 4).Value = Target.Value
    Case Is = 5
        Target.Offset(0, 5).Value = Target.Value
    Case Is = 6
        Target.Offset(0, 6).Value = Target.Value
        Case Is = 7
        Target.Offset(0, 7).Value = Target.Value
    Case Is = 8
        Target.Offset(0, 8).Value = Target.Value
    Case Is = 9
        Target.Offset(0, 9).Value = Target.Value
    Case Is = 10
        Target.Offset(0, 10).Value = Target.Value
    Case Is = 11
        Target.Offset(0, 11).Value = Target.Value
    Case Is = 12
        Target.Offset(0, 12).Value = Target.Value
End Select
    Range("a2").Activate
End Sub
Avatar billede store-morten Ekspert
13. maj 2018 - 12:13 #8
Du går ned på Ark fanen, vis programkode, kopierer så din formel over, lukker på rødt kryds.
Avatar billede store-morten Ekspert
13. maj 2018 - 12:28 #9
Når du gemmer arket, skal du vælge: Type --> Med aktive makroer.
Avatar billede FinnLauridsen Forsker
13. maj 2018 - 13:00 #10
takker for hjælpen til jer begge
Avatar billede store-morten Ekspert
13. maj 2018 - 13:08 #11
Velbekomme:-)

Prøv også denne, der ikke over skrive datoen, ved ændring.
Men fylder på, nedad
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2")) Is Nothing Then
    If IsDate(Target.Value) = False Then
        MsgBox "Der skal indtastes en dato i korrekt format: ""dd-mm-åå""", vbCritical + vbOKOnly
        Range("a2").Activate
        Exit Sub
    End If
        maaned = Month(Target.Value)
    Else
        Exit Sub
    End If
Select Case maaned
    Case Is = 1
        Target.Offset(Range("B" & Rows.Count).End(xlUp).Row - 1, 1).Value = Target.Value
    Case Is = 2
        Target.Offset(Range("C" & Rows.Count).End(xlUp).Row - 1, 2).Value = Target.Value
    Case Is = 3
        Target.Offset(Range("D" & Rows.Count).End(xlUp).Row - 1, 3).Value = Target.Value
    Case Is = 4
        Target.Offset(Range("E" & Rows.Count).End(xlUp).Row - 1, 4).Value = Target.Value
    Case Is = 5
        Target.Offset(Range("F" & Rows.Count).End(xlUp).Row - 1, 5).Value = Target.Value
    Case Is = 6
        Target.Offset(Range("G" & Rows.Count).End(xlUp).Row - 1, 6).Value = Target.Value
        Case Is = 7
        Target.Offset(Range("H" & Rows.Count).End(xlUp).Row - 1, 7).Value = Target.Value
    Case Is = 8
        Target.Offset(Range("I" & Rows.Count).End(xlUp).Row - 1, 8).Value = Target.Value
    Case Is = 9
        Target.Offset(Range("J" & Rows.Count).End(xlUp).Row - 1, 9).Value = Target.Value
    Case Is = 10
        Target.Offset(Range("K" & Rows.Count).End(xlUp).Row - 1, 10).Value = Target.Value
    Case Is = 11
        Target.Offset(Range("L" & Rows.Count).End(xlUp).Row - 1, 11).Value = Target.Value
    Case Is = 12
        Target.Offset(Range("M" & Rows.Count).End(xlUp).Row - 1, 12).Value = Target.Value
End Select
    Range("a2").Activate
End Sub
Avatar billede jkrons Professor
13. maj 2018 - 13:44 #12
Velbekomme
Avatar billede FinnLauridsen Forsker
13. maj 2018 - 14:30 #13
Det er jo selvfølgelig noget som jeg skal bruge i et andet excel ark, i det andet ark kommer datoèn i J8, det har jeg selvfølgelig rettet i formlen , skal de 12 mdr. også ændres på en eller anden måde ?
Avatar billede FinnLauridsen Forsker
13. maj 2018 - 14:41 #14
Kan det være at det ikke virker fordi det er en formel , der frembringer datoen ?formlen ser sådan ud:
=HVIS(OG('Skema A1'!$A$13="FRT";TÆL.HVIS('Skema A1'!B16:B100;"X")>0);'Skema A1'!B12;"")
Avatar billede FinnLauridsen Forsker
13. maj 2018 - 14:54 #15
det virker alligevel, men kan formlen kikke på hele kol. J
sådan at forstå at hvis der kommer en dato i J125 så skal den bare gøre det samme ?
Avatar billede store-morten Ekspert
13. maj 2018 - 14:54 #16
#13 Ja.
Der henvises til specifikke celler i koden

#14 Ja.
Der skal indtastes en ændring i cellen (Formel er ikke en ændring)
Avatar billede store-morten Ekspert
13. maj 2018 - 14:58 #17
Læg din til rettede kode her ind?
Avatar billede store-morten Ekspert
13. maj 2018 - 15:06 #18
Ved ændring i celle J8
If Not Intersect(Target, Range("J8")) Is Nothing Then

Ved ændring i cellerne J8 og J100
If Not Intersect(Target, Range("J8, J100")) Is Nothing Then

Ved ændring i cellerne fra J8 til J100
If Not Intersect(Target, Range("J8:J200")) Is Nothing Then
Avatar billede FinnLauridsen Forsker
13. maj 2018 - 16:52 #19
opretter et andet spørgsmål
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