Avatar billede Uggeren Nybegynder
06. februar 2014 - 12:37 Der er 6 kommentarer

Brug for vælg til excel formel (blanding af vlookup og IF)

Hej

Jeg håber en af Jer har en mulig løsning.

Jeg har en sheet (sheet input), hvor jeg skal hente data til. Derudover har jeg 2 sheets. Det ene sheet er med 2013 tal, hvor der i Kolonne A med "Kunder" og Kolonne B med "omsætning". Det samme er tilfældet for 2 sheet, bare med 2012 tal, ellers det samme.

Jeg vil gerne bruge en formel, hvor jeg automatisk kan hente de 5 nye kunder der fremgår i 2013 sheet, men ikke i 2012 sheet. Samtidig skal den slå de 5 største tilbage (af de nye), målt på beløbene.

Jeg ved ikke om der er én formel der kan gøre dette, eller alternativt lave en formel i sheet 2013 og derefter en anden formel i input sheet
Avatar billede supertekst Ekspert
06. februar 2014 - 12:58 #1
"Samtidig skal den slå de 5 største tilbage (af de nye), målt på beløbene." - hvilket betyder?

Udover formler er der jo også mulighed med en makro.

men velkommen til Eksperten.
Avatar billede Uggeren Nybegynder
06. februar 2014 - 13:30 #2
Var lidt dårligt formuleret, men formel skal give 5 nye kunder tilbage, men samtidig skal det være de 5 med mest omsætning ud af den samlede liste. Så selvom der måske er 7 nye kunder i forhold til 2012, er det kun de 5 største formlen skal give tilbage.

Tak
Avatar billede supertekst Ekspert
06. februar 2014 - 13:48 #3
Ok - vil tro der skal VBA til - altså en makro.
Avatar billede supertekst Ekspert
06. februar 2014 - 13:59 #4
Du er velkommen til at sende filen - eller opbygge en model - så skal jeg forsøge

@-adresse under min profil
Avatar billede Uggeren Nybegynder
06. februar 2014 - 16:35 #5
Hej. Jeg har sendt dig en mail, så må du se om det er muligt. Det er fedt at du gider. Tak for hjælpen :)
Avatar billede supertekst Ekspert
07. februar 2014 - 13:35 #6
Rem Version 1.1
Rem ===========
Const dataRæk = 3
Const kundeIdKol = "B"                              'kan justeres
Const topRæk1 = 10
Dim arkÅr1 As Worksheet, arkÅr2 As Worksheet

Dim tællerNye As Integer
Public Sub topFem()
Dim antalRæk1 As Integer, ræk As Integer, kundeId As String, turnOver As Long, topRæk As Integer
    nyeKunder = ""
    tællerNye = 0
   
    Set arkÅr1 = ActiveWorkbook.Sheets(2)
    Set arkÅr2 = ActiveWorkbook.Sheets(3)
   
Rem Antal rækker sidste år
    antalRæk1 = arkÅr1.Range("A65000").End(xlUp).Row   

Rem Traverser sidste år
    Application.ScreenUpdating = False
   
    For ræk = dataRæk To antalRæk1
        kundeId = arkÅr1.Range(kundeIdKol & ræk)
        If kundeId <> "" Then
            If findesKundenForrigeÅr(kundeId) = False Then
                turnOver = arkÅr1.Range(kundeIdKol & ræk).Offset(0, 1)
                tællerNye = tællerNye + 1
               
                klargørNyeTilSortering tællerNye, kundeId, turnOver
            End If
        End If
    Next ræk
   
    If tællerNye > 0 Then
Rem Sorter nye iflg. turnover
        sorteringNye tællerNye
   
Rem Placer de 5 "største"
        topRæk = topRæk1
       
        For ræk = 1 To 5
            Range(kundeIdKol & topRæk) = Range("Y" & ræk)
            Range(kundeIdKol & topRæk).Offset(0, 1) = Range("Z" & ræk)
            topRæk = topRæk + 1
        Next ræk
       
Rem Slet sorteringsOmrådet
        Range("Y1:Z" & tællerNye).Select
        Selection.ClearContents
        Range("A1").Select
    End If
End Sub
Private Function findesKundenForrigeÅr(kundeId)
    With arkÅr2.Range(kundeIdKol & dataRæk & ":" & kundeIdKol & 65000)
        Set c = .Find(kundeId, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            findesKundenForrigeÅr = True
        Else
            findesKundenForrigeÅr = False
        End If
    End With
End Function
Private Sub klargørNyeTilSortering(tællerNye, kundeId, turnOver)
    Range("Y" & tællerNye) = kundeId
    Range("Z" & tællerNye) = turnOver
End Sub
Private Sub sorteringNye(tællerNye)
    Range("Y1:Z" & tællerNye).Select
    ActiveWorkbook.Worksheets("Input data").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Input data").Sort.SortFields.Add Key:=Range( _
        "Z1:Z" & tællerNye), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Input data").Sort
        .SetRange Range("Y1:Z" & tællerNye)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
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
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