Avatar billede Jan Hansen Ekspert
03. december 2016 - 07:47 Der er 4 kommentarer og
1 løsning

lave en function der laver opslag + tæl.hvis

Mit forsøg:

Option Explicit
Dim pArk As Worksheet
Dim pMedlem As Range
Dim TælOmråde As Range
Dim LoMedlem As Range
Dim pCell As Range

Function FremMøde(Medlem As Range, Måned As Range, Kriterie As String) As Integer
    With Application.WorksheetFunction
        Select Case Måned.Value
            Case "Januar"
                Set pArk = Sheets("1. Kvartal")
                Set pMedlem = pArk.Range("B4", "B59")
                For Each pCell In pMedlem
                    If pCell.Value = Medlem.Value Then
                        Set LoMedlem = Range(pCell)
                    End If
                Next pCell
                Set TælOmråde = Range(LoMedlem.Offset(0, 1), LoMedlem.Offset(0, 10))
                FremMøde = .CountIf(TælOmråde, Kriterie)
        End Select
    End With
End Function

Nogen der kan se hvad jeg gør galt?

Mvh Jan
Avatar billede jkrons Professor
03. december 2016 - 12:51 #1
Måske kunne du fortælle, hvad der sker, når du kører koden? Og hvad du ønsker, at der skal ske?
Avatar billede Jan Hansen Ekspert
03. december 2016 - 13:19 #2
Koden skal hente en sammentælling af antal celler der indeholder "+"(Kriterium) i kol C-K (Januar) udfor en række som er valgt(Medlem)

Mvh Jan
Avatar billede jkrons Professor
03. december 2016 - 13:37 #3
Skal det være kode, eller må det gøres med en formel?
Avatar billede Jan Hansen Ekspert
03. december 2016 - 13:39 #4
gerne formel,Vil faktisk laveformel med vba
03. december 2016 - 14:44 #5
jkrons - jeg er helt sikker på, at dette kan laves med en array formel, hvis du har mod på det... men her er noget vba

Der er sat named ranges i området med medlemmer i medlemsarket (medlemsliste), og i området med januar markeringer (deltaget_januar) - fil kommer retur

Function Deltaget(Medlem As Range, Maaned As Range, Kriterie As String) As Integer
    Application.Volatile
   
    Dim iRetVal As Integer
    Dim rCountRange As Range
    Dim iCountRow As Integer, iCol As Integer
   
    On Error GoTo funcEnd
    Select Case Maaned.Value
        Case "Januar":      Set rCountRange = Application.Names("deltaget_januar").RefersToRange
        'Case "Februar":      Set rCountRange = Application.Names("deltaget_februar").RefersToRange
        'named range ikke oprettet endnu for de resterende måneder
       
    End Select
   
    With Application.WorksheetFunction
        iRetVal = 0
        iCountRow = .Match(Medlem.Value, Application.Names("medlemsliste").RefersToRange, 0)
       
        If iCountRow > 0 Then
            For iCol = 1 To rCountRange.Columns.Count
                If rCountRange.Cells(iCountRow, iCol).Value = Kriterie Then
                    iRetVal = iRetVal + 1
                End If
            Next iCol
        End If
       
    End With
   
funcEnd:
    Deltaget = iRetVal
End Function
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