Avatar billede micwar Mester
30. april 2012 - 07:30 Der er 4 kommentarer og
1 løsning

Tjek dato og en celle

Hej Eksperter

Jeg har brug for en Makro der skal kunne udplukke de dage hvor der mangler en pogave som bliver noteret med et X.
Jeg har opsamlet data for et år snart med forskellige oplysninger i som bliver gemt som Kolonne 1 Dato, Kolonne 2 X, kolonne 3 X osv. Det er ikke alle kolonner der er X i da det kommer an på om opgaverne er løst.
Mit ønske er at have en makro der kan udplukke de datoer der ikke er noteret noget x i f.eks kolonne 3.
På et år mangler der måske 30 dage hvor der mangler et X i en celle og så kunne det være rart at få fundet de datoer.
Resultatet må gerne komme frem på en textbox.

Skriv gerne for flere informationer.
Avatar billede supertekst Ekspert
30. april 2012 - 08:54 #1
Hvis du sender filen eller en model heraf - så skal jeg forsøge.
@-adresse under min profil.
Avatar billede store-morten Ekspert
30. april 2012 - 12:52 #2
Prøv disse 2 på en kopi af dit Ark.

Kontrolere først kolonne B derefter C. Msgbox og tæller
Sub loopCellsBox()

Dim iRow1 As Integer 'Rækken (B) der arbejdes med
   
    iRow1 = 2 'Sæt hvilken række der startes fra
            'Overskrifter i række 1
    Tæl1 = 0
    Do While Range("A" & iRow1).Value <> "" 'Så længe der er data I kolonne "Datokolonnen"
       
        If Not Range("B" & iRow1).Value = "x" And Not Range("B" & iRow1).Value = "X" Then
        MsgBox "Ingen x i kolonne B ved Dato: " & Range("A" & iRow1).Value & vbCrLf & _
                      "Dette er i række " & iRow1
        Tæl1 = Tæl1 + 1
       
        End If
        iRow1 = iRow1 + 1 'Forbered læsning af næste række
    Loop 'Afslut loopet
            MsgBox "Ingen X ved Dato i kolonne B" & vbCrLf & _
            "I " & Tæl1 & " kolonner"


Dim iRow2 As Integer 'Rækken (C) der arbejdes med

    iRow2 = 2 'Sæt hvilken række der startes fra
            'Overskrifter i række 1
    Tæl2 = 0
    Do While Range("A" & iRow2).Value <> "" 'Så længe der er data I kolonne "Datokolonnen"

        If Not Range("C" & iRow2).Value = "x" And Not Range("C" & iRow2).Value = "X" Then
        MsgBox "Ingen x i kolonne C ved Dato: " & Range("A" & iRow2).Value & vbCrLf & _
                      "Dette er i række " & iRow2
        Tæl2 = Tæl2 + 1
        End If
        iRow2 = iRow2 + 1 'Forbered læsning af næste række
    Loop 'Afslut loopet
            MsgBox "Ingen X ved Dato i kolonne B" & vbCrLf & _
            "I " & Tæl2 & " kolonner"
   
End Sub

Kontrolere først kolonne B derefter C.Ssætter farver på Datoer.
Sub loopCellsFarve()

Dim iRow1 As Integer 'Rækken der arbejdes med
   
    iRow1 = 2 'Sæt hvilken række der startes fra
            'Overskrifter i række 1
   
    Do While Range("A" & iRow1).Value <> "" 'Så længe der er data I kolonne "Datokolonnen"
       
        If Not Range("B" & iRow1).Value = "x" And Not Range("B" & iRow1).Value = "X" Then
        Range("B" & iRow1).Offset(0, -1).Interior.ColorIndex = 6 'farver Dato gul
        End If
        iRow1 = iRow1 + 1 'Forbered læsning af næste række
    Loop 'Afslut loopet


    Dim iRow2 As Integer 'Rækken der arbejdes med
   
    iRow2 = 2 'Sæt hvilken række der startes fra
            'Overskrifter i række 1
   
    Do While Range("A" & iRow2).Value <> "" 'Så længe der er data I kolonne "Datokolonnen"
       
        If Not Range("C" & iRow2).Value = "x" And Not Range("C" & iRow2).Value = "X" Then
        Range("C" & iRow2).Offset(0, -2).Interior.ColorIndex = 3 'farver Dato rød
        End If
        iRow2 = iRow2 + 1 'Forbered læsning af næste række
    Loop 'Afslut loopet
End Sub
Avatar billede supertekst Ekspert
30. april 2012 - 12:57 #3
Public Sub kontrolAfX()
Dim antalRækker As Long, dato As Date, datoSamling As String, antal As Long
Dim flag As Boolean, rækkeNr As Long
    antalRækker = ActiveCell.SpecialCells(xlLastCell).Row
    datoSamling = ""
    antal = 0
    dato = Range("A4")                                  'første dato
    flag = False
   
    For rækkeNr = 4 To antalRækker
        If Range("A" & rækkeNr) <> dato Then            'er det ny dato?
Rem Ja
            If flag = False Then                        'var der X i kolonne N
Rem Nej - fejlmelding
                antal = antal + 1
                datoSamling = datoSamling & dato & vbCr
            End If
            flag = False
            dato = Range("A" & rækkeNr)            'gem aktuelle dato
        Else
Rem Nej - samme dato
            If UCase(Range("N" & rækkeNr)) = "X" Then  'er der X i kolonne N
Rem Ja
                flag = True
            End If
        End If
    Next
   
    If flag = False Then
Rem fejlmeld sidste dato
        antal = antal + 1
        datoSamling = datoSamling & dato & vbCr
    End If
   
    MsgBox "Antal manglende X: " & CStr(antal) & vbCr & datoSamling
End Sub
Avatar billede micwar Mester
30. april 2012 - 13:13 #4
hej store-morten.
Tak for dit bud, inden du skrev havde supertekst fundet løsningen som jeg kunne bruge, men vil gerne prøve din for at se om den kan bruges til andet, vil gerne give 30 point for det hvis man kan.
Avatar billede store-morten Ekspert
30. april 2012 - 14:15 #5
Det er OK
Sub loopCellsN()
Dim iRow As Integer 'Rækken (N) der arbejdes med
    iRow = 4 'Sæt hvilken række der startes fra
    Tæl2 = 0
    Do While Range("A" & iRow).Value <> "" 'Så længe der er data I kolonne "Datokolonnen"
   
        If Not Range("N" & iRow).Value = "x" And Not Range("N" & iRow).Value = "X" Then
        Tæl = Tæl + 1
        List = List & Range("A" & iRow).Value & "  I række:  " & Range("A" & iRow).Row & vbCr
        End If
        iRow = iRow + 1 'Forbered læsning af næste række
       
    Loop 'Afslut loopet
            MsgBox "Ingen X i kolonne N" & vbCrLf & _
            "med Dato i kolonne A " & vbCrLf & _
            "I alt: " & Tæl & " Rækker" & vbCrLf & _
            " " _
            & vbCr & List
End Sub
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
Kurser inden for grundlæggende programmering

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