Avatar billede Sørensen Juniormester
10. april 2018 - 13:03 Der er 2 kommentarer og
1 løsning

VBA sammenhold data og lav liste

Hej

Jeg har et problem jeg håber der er nogen med et godt excel hoved der kan hjælpe mig med.
Jeg har 6 lister i arket "pr. 1 april 2018", hvor jeg gerne vil at den sammenholder data fra arket "selvhjælpsliste".
Jeg vil gerne at den kigger på producenten i kolonne B i arket "pr. 1 april 2018", finder denne producenten i kolonne B i arket "selvhjælpsliste" og så kigger om der står noget ud fra denne i kolonne D. Hvis der står noget i kolonne D, skal den i arket "pr. 1 april 2018" ud fra producenten i kolonne D skrive "indhent selv".
Hvis der IKKE står noget i kolonne D i selvhjælpslisten, skal den skrive "send mail" i "pr. 1 april 2018" kolonne D.
Alt det her ville jeg gerne at den kører når man trykker på en knap.
Er det her noget man kan få skabt med VBA??

Har lavet et link til filen da det måske gør det nemmere at forstå hvad det er jeg ønsker
https://www.dropbox.com/s/kp6f89t728mv8mf/Certifikatudl%C3%B8b%202018%20under%20udvikling.xlsm?dl=0
Avatar billede kim1a Ekspert
10. april 2018 - 17:28 #1
Første skridt kunne være dette:

Sub test()

Dim intRow As Integer
Dim intNumRows As Integer

intNumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count

Application.ScreenUpdating = False
For intRow = 4 To intNumRows
Range("D" & intRow).Formula = "=IFERROR(VLOOKUP(A" & intRow & ",'Selvhjælpsliste'!A1:A300,1,FALSE),2)"

Next intRow

End Sub

Så har vi i hvert fald et opslag der angiver om leverandør findes i selvhjælpslisten. At sætte en if sætning på og så lave de to formuleringer kan du måske selv - eller også vil en anden nok hjælpe.
Avatar billede excelent Ekspert
10. april 2018 - 21:52 #2
Sub test_Producent()

Set sh1 = Sheets("pr. 1 april 2018")
Set sh2 = Sheets("Selvhjælpsliste")

LastRow1 = sh1.Cells(Rows.Count, "B").End(xlUp).Row
LastRow2 = sh2.Cells(Rows.Count, "B").End(xlUp).Row

For Each c In sh1.Range("B4:B" & LastRow1)
  If c <> "" Then
  If Application.CountIf(sh2.Range("B2:B" & LastRow2), c) Then
    rk = sh2.Range("B2:B" & LastRow2).Find(c, LookIn:=xlValues).Row
    If sh2.Cells(rk, "D") <> "" Then sh1.Cells(c.Row, "D") = "Indhent selv" Else sh1.Cells(c.Row, "D") = "Send mail"
  End If
  End If
Next

End Sub
Avatar billede Sørensen Juniormester
11. april 2018 - 14:30 #3
Det fungere lige som jeg havde forestillet mig. Tusind tak for den hurtige hjælp.
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