Avatar billede hpo Nybegynder
29. september 2006 - 22:40 Der er 7 kommentarer og
2 løsninger

Makro - tæl 1 tegn i en kolonne

Jeg skal lave en makro, der kan tælle antallet af forekomster af tegnene 1,F,S og N i kolonne A. Jeg vil gerne tælle dem op i en variabel, og skrive variablerne i fire celler.

Det er problemstillingen nævnt i
http://www.eksperten.dk/spm/735384
som jeg gerne vil lave som en makro - nogen der kan hjælpe?
Avatar billede gider_ikke_mere Nybegynder
30. september 2006 - 00:31 #1
Denne er case sencitive!

Sub Sum()
Dim I As Long, F, S, N
Bund = Range("A65536").End(xlUp).Row
MitRange = Range("A1:A" & Bund)
For I = 1 To Bund
    If Left(MitRange(I, 1), 1) = "1" Then
        Et = Et + 1
    Else
        If Left(MitRange(I, 1), 1) = "F" Then
            F = F + 1
        Else
            If Left(MitRange(I, 1), 1) = "S" Then
                S = S + 1
            Else
                If Left(MitRange(I, 1), 1) = "N" Then
                    N = N + 1
                End If
            End If
        End If
    End If
Next
Range("B1").Value = Et
Range("B2").Value = F
Range("B3").Value = S
Range("B4").Value = N
End Sub
Avatar billede gider_ikke_mere Nybegynder
30. september 2006 - 00:37 #2
Og hvis det både skal være stort og småt:

Sub Sum()
Dim I As Long, F As Long, S As Long, N As Long
Bund = Range("A65536").End(xlUp).Row
MitRange = Range("A1:A" & Bund)
For I = 1 To Bund
    If Left(MitRange(I, 1), 1) = "1" Then
        Et = Et + 1
    Else
        If UCase(Left(MitRange(I, 1), 1)) = "F" Then
            F = F + 1
        Else
            If UCase(Left(MitRange(I, 1), 1)) = "S" Then
                S = S + 1
            Else
                If UCase(Left(MitRange(I, 1), 1)) = "N" Then
                    N = N + 1
                End If
            End If
        End If
    End If
Next
Range("B1").Value = Et
Range("B2").Value = F
Range("B3").Value = S
Range("B4").Value = N
End Sub
Avatar billede kabbak Professor
30. september 2006 - 11:27 #3
et alternativ, er at sætte den i arkets modul

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
        Dim I As Long, F As Long, S As Long, N As Long
        Dim Et As Long, Bund As Long, MitRange As Variant
        Bund = Range("A65536").End(xlUp).Row
        MitRange = Range("A1:A" & Bund)
        For I = 1 To Bund
            Select Case UCase(Left(MitRange(I, 1), 1))
            Case "1": Et = Et + 1
            Case "F": F = F + 1
            Case "S": S = S + 1
            Case "N": N = N + 1
            Case Else
            End Select
        Next
        Range("B1").Value = Et
        Range("B2").Value = F
        Range("B3").Value = S
        Range("B4").Value = N
    End If
End Sub
Avatar billede hpo Nybegynder
02. oktober 2006 - 08:30 #4
>> kabbak
Hvordan er det nu det fungerer med indsættelse i modul?

Jeg vil gerne give jer point begge to. Læg begge et svar.

Mange tak for hjælpen.
Avatar billede kabbak Professor
02. oktober 2006 - 10:25 #5
Indsættelse i et Arkmodul

Højreklik på arkfanen, på det ark som koden skal virke på, vælg vis programkode.

Der skal du kopiere min kode ind.
Koden er automatisk, forstået på den måde at hvergang du skriver/ændrer i kolonne A, så kører den.
Avatar billede gider_ikke_mere Nybegynder
02. oktober 2006 - 12:52 #6
Et svar.
Avatar billede hpo Nybegynder
02. oktober 2006 - 19:20 #7
takker begge to.
Avatar billede gider_ikke_mere Nybegynder
02. oktober 2006 - 19:30 #8
Velbekomme.
Avatar billede kabbak Professor
02. oktober 2006 - 20:22 #9
tak
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