Avatar billede Nordsjaelland Nybegynder
18. november 2013 - 16:22 Der er 15 kommentarer og
1 løsning

Tælle dage uden fejl i en tabel

Hej alle

Jeg skal tælle, det højeste, dage uden fejl i nedenstående tabel, - der er et udsnit af den samlede tabel.
"JA" betyder ingen fejl og "NEJ" betyder én eller flere fejl.
Tabellen er dynamisk og henter data fra bagvedliggende tabeller.
Mit ønske er en automatisk sammentælling, der viser det højeste antal dage uden fejl. Som eksempel i tabellen er der en sammenhængende periode fra 09.nov til 13.nov uden fejl, dvs. 5 dage.
Dette tal skal først overskrives, når en sammenhængende periode med JA'er er højere.
- På forhånd tak for hjælpen. VH Hans

Dato    Check
05. nov 2013    JA
06. nov 2013    JA
07. nov 2013    JA
08. nov 2013    NEJ
09. nov 2013    JA
10. nov 2013    JA
11. nov 2013    JA
12. nov 2013    JA
13. nov 2013    JA
14. nov 2013    NEJ
15. nov 2013    JA
16. nov 2013    JA
17. nov 2013    NEJ
18. nov 2013    JA
19. nov 2013    Senere
20. nov 2013    Senere
21. nov 2013    Senere
Avatar billede Sitestory Mester
18. november 2013 - 16:50 #1
Jeg ved ikke, om det kan laves med formler, men ellers kan flg. makro gøre det:

Sub TaelJa()
Dim lFlest As Long  'Det hidtil højeste
Dim lNu As Long      'Antal lige nu
Dim lTael As Long    'Tæller
Dim rCol As Range

'Finder området i kolonnen som skal
'gennemløbes. Her antages, at det
'starter i celle B2.
Set rCol = Range("B2")
If Len(rCol.Offset(1, 0).Value) > 0 Then
  Set rCol = Range(rCol, rCol.End(xlDown))
End If

'Løkken
With rCol
  For lTael = 1 To .Count
      If .Item(lTael).Value = "ja" Then
        lNu = lNu + 1
        If lNu > lFlest Then lFlest = lNu
      Else
        lNu = 0
      End If
  Next
End With

'Resultatet indsættes i D1.
Range("D1").Value = lFlest

End Sub
Avatar billede Sitestory Mester
18. november 2013 - 16:53 #2
Glemte: Du skal måske skrive "ja" i koden, som det står i regnearket (store eller små bogstaver). Ellers skal man definere sammenligningsmetode.
Avatar billede jens48 Ekspert
18. november 2013 - 17:53 #3
Du kan se et eksempel med en anden makro, der også viser start og slutdato på http://gupl.dk/704267/
Avatar billede Nordsjaelland Nybegynder
19. november 2013 - 10:06 #4
Hej Jens 48 og Sitestory

Tak for super svar - jeg er ny i dette forum og kan vist ikke svare enkeltvis.
Jeg skal også høre hvorledes man tildeler point til jer begge?

Jeg har et hurtigt tillægsspørgsmål:
Sitestory: Hvordan skal makroen indledes, så den automatisk opdaterer ved ændringer i tabellen?
Jens48: Jeg kan ikke gennemskue hvorledes makroen checker et område (tabel) der ikke er placeres med samme udgangspunkt som i dit eksempel

- Tak for hjælpen
Vh Hans
Avatar billede jens48 Ekspert
19. november 2013 - 10:23 #5
"2" i linien med lastrow og i if-linerne bestemmer at det er kolonne 2 (B) der testes
Avatar billede Nordsjaelland Nybegynder
19. november 2013 - 12:12 #6
Perfekt Jens

Vh Hans
Avatar billede Nordsjaelland Nybegynder
19. november 2013 - 12:23 #7
Hej Jens

Nu hvor det virker, kunne det også være super hvis:

Makroen (forenkles til) at vise det aktuelle antal dage uden fejl, dvs. antal JA'er op til dags dato (som jo starter med "Senere")

Ved du også hvordan makroen skal skrives, så den opdaterer automatisk når der ændres i tabellen

VH Hans
Avatar billede Nordsjaelland Nybegynder
19. november 2013 - 12:24 #8
Super Sitestory - det virker

Jeg svarer her, så jeg overføre dine point..
Avatar billede Sitestory Mester
19. november 2013 - 14:05 #9
Du kan indsætte følgende i fanebladets kodeark. Det finder du ved at åbne VBA-editoren og dobbeltklikke på fanebladets ikon i Project Explorer. Hvis sidstnævnte ikke er åben, åbner du den ved at trykke CTRL+R.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Columns(2) Then
  Module1.TaelJa  'Kald proceduren i Module1
End If

End Sub


Så køres koden automatisk, hvis der sker en ændring i kolonne 2.
Avatar billede Sitestory Mester
19. november 2013 - 14:11 #10
Undskyld, det var noget sludder. Der skal stå:

Target.Column = 2 og ikke Targets.Columns(2)
Avatar billede Nordsjaelland Nybegynder
20. november 2013 - 13:35 #11
Hej Sitestoty

Tak for svaret, men jeg får det ikke til at fungere med ændringer i kolonnen. Jeg har også forsøgt med følgende til kodearket; "denne_projektmappe

Private Sub Workbook_Open()
Call Module1.TaelJa
End Sub 

Alle makroer er aktiveret under indstillinger, så det er heller ikke det.

- Måske du har et bud på hvad der er galt

Vh Hans
Avatar billede Sitestory Mester
20. november 2013 - 16:28 #12
@Nordsjaelland

Jeg har vist haft en uheldig hånd: det skal være Worksheet_Change og ikke Selection_Change. Beklager.

Jeg har lagt et zip-komprimeret regneark med eksemplet her:
http://sitestory.dk/excel_vba/sheets/fejlfridage.zip
Avatar billede Nordsjaelland Nybegynder
20. november 2013 - 16:58 #13
Hej igen

Tak for super svar, jeg skylder en masse point

Jeg har testet eksempel-regnearket, som ser at det virker når man skriver direkte i cellen (åbner, skriver, lukker)
Men i "min" kolonne kommer ændringer af JA, NEJ, Senere, på inddirekte vis, da hver celle refererer til bagvedliggende celler

- Kan dette problem løses

Vh Hans
Avatar billede Sitestory Mester
20. november 2013 - 17:23 #14
@Nordskaelland, en mulighed er at slette Worksheet_Change proceduren og i stedet indsætte flg., som kalder makroen TaelJa, når fanebladet aktiveres, altså fanebladet hvor der skal tælles:


Private Sub Worksheet_Activate()
Module1.TaelJa  'Kald proceduren i Module1
End Sub
Avatar billede Nordsjaelland Nybegynder
02. december 2013 - 14:03 #15
Hej Sitestory

Jeg har været væk fra "tråden", men håber du stadig gider svare, for det driller med at køre makroen automatisk.

Jeg har forsøgt det meste, men det lykkes ikke, når de data som makroen skal reagere på, ændres via en relativ reference til en anden kolonne.
Makroen virker kun, når cellen åbnes og der skrives aktivt i cellen.

Jeg har også forsøgt med at køre makroen automatisk når regnearket åbnes eller gemmes, men uden held

- På forhånd tak for hjælpen

VH Hans
Avatar billede Sitestory Mester
02. december 2013 - 16:44 #16
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