Avatar billede Jensenjo Juniormester
30. juni 2022 - 08:12 Der er 2 kommentarer og
1 løsning

Stykliste

Jeg vil gerne have lavet en stykliste, hvor du hvis du taster et varenummer, der består af flere dele tager det hele med over.

F.eks

101020 Beslag består af
101021 10 vinkelsbeslag
101022 40 skruer

Jeg har en formel - som jeg har fundet på nettet:

Function FLOPSLAG(ops As Variant, num As Single, rn As Range, ofs As Byte)
    Dim Taeller As Long
    Dim i As Long
    i = 0
    For Each c In rn.Columns(1).Cells
        If c.Value = ops Then
            i = i + 1
        End If
    Next c
    If num - CInt(num) <> 0 Or num < 1 Then
        FLOPSLAG = CVErr(xlErrNum)
        Exit Function
    End If
    If i < num Then
        FLOPSLAG = CVErr(xlErrNA)
        Exit Function
    End If
    Taeller = 0
    For Each c In rn.Columns(1).Cells
        If c.Value = ops.Value Then
            Taeller = Taeller + 1
            If Taeller = num Then
                FLOPSLAG = c.Offset(0, ofs - 1).Value
                Exit Function
            End If
        End If
    Next c
End Function

- og den fungerer sådan set ok - den er bare mega langsom

Nogen der har et forslag ?
Avatar billede bak Seniormester
30. juni 2022 - 15:02 #1
Jeg ville nok bruge funktionen Filter istedet
stylkliste
G                      H
Varenummer    BOM nummer
101020    1
101020    2
101020    3
101021    4
101021    5
101021    6

varenummer i A1 (101020)
formel i celle A2
=FILTER( FILTER( F2:G7; F2:F7 = A1 );{ 0\1 })
dette giver alle hit på varenummer = 101020 i et hug
Avatar billede Jensenjo Juniormester
30. juni 2022 - 15:36 #2
Hej

Det er fordi jeg skal have det over på et andet ark , da jeg skal lave tilbud, hvor varenumrene forekommer flere gange. Ellers ville det have været en nem løsning :-))
Avatar billede bak Seniormester
01. juli 2022 - 20:08 #3
Function FLOPSLAG(ops As Variant, num As Single, rn As Range, ofs As Byte)

    Dim Taeller As Long
    Dim i As Long
    Dim va As Variant
    va = rn
    Dim Counter As Long
    i = 0
    If num - CInt(num) <> 0 Or num < 1 Then
        FLOPSLAG = CVErr(xlErrNum)
        Exit Function
    End If
   
    For Counter = LBound(va, 1) To UBound(va, 1)
        If va(Counter, 1) = ops Then i = i + 1
    Next
   
    If i < num Then
        FLOPSLAG = CVErr(xlErrNA)
        Exit Function
    End If
   
    Taeller = 0
    For Counter = LBound(va, 1) To UBound(va, 1)
        If va(Counter, 1) = ops Then
            Taeller = Taeller + 1
            If Taeller = num Then
                FLOPSLAG = va(Counter, ofs)
                Exit Function
            End If
        End If
    Next
   
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