• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA niet gebruikt in lijst

Status
Niet open voor verdere reacties.

moensk

Gebruiker
Lid geworden
23 jun 2013
Berichten
787
Ik heb 2 lijsten
lijst 1 (kolom A & B) bevat datum en code kolom
lijst 2 (kolom D) bevat alle codes

nu wil ik een derde lijst (Kolom G) waarbij als ik een datum ingeef (cel F3) hij mij in kolom G de lijst geeft van de niet gebruikte codes van kolom D
in bijlage kort voorbeeld om dit te verduidelijken Bekijk bijlage help vergelijken.xlsx
 
Of maar een lusje.
Code:
Sub hsv()
Dim sv, i As Long, c00 As String
sv = Cells(3, 1).CurrentRegion.Resize(11, 8)
c00 = Join(Application.Transpose(Application.Index(sv, [row(3:11)], 4))) & " "
  For i = 3 To UBound(sv)
   If sv(i, 1) = sv(1, 6) And InStr(c00, sv(i, 2)) Then c00 = Replace(c00, sv(i, 2) & " ", "")
  Next i
 Cells(5, 8).Resize(UBound(Split(c00))) = Application.Transpose(Split(c00))
End Sub
 
"Edmoor",
wilt gij even kijken om u VBA aan te passen naar onderstaande vraag aub

gezien de ODBC koppelingen dat ik gemaakt heb, heb ik wat aanpassingen gedaan aan de 2 lijsten.

lijst 1 (kolom A & B) bevat datum en code kolom (deze bevinden zich in tabblad "data")
lijst 2 (kolom D) bevat alle codes (deze bevinden zich in tabblad "personeel")
datum waarop moet geselecteerd worden staat in tabblad "info" in cel (1, 3)
resultaat moet in tabblad "info" komen vanaf cel (48, 5)
 
Het ligt al enige minuten voor je klaar, maar ik werd niet gevraagd. :thumb::thumb:
 
HSV

het zou leuk zijn om het van u ook te krijgen :)
snelheid troef zou ik zeggen bij "kleuren wies" :)
 
Ik bedoel er maar mee, dat als je een persoonlijke voorkeur hebt, anderen afhaken.
Code:
Sub hsv()
Dim sv, i As Long, c00 As String, datum As Date
 sv = Sheets("data").Cells(4, 1).CurrentRegion
 c00 = Join(Application.Transpose(Sheets("personeel").Range("A5:A13"))) & " "
 datum = Sheets("info").Cells(1, 3)
    For i = 2 To UBound(sv)
      If sv(i, 1) = datum And InStr(c00, sv(i, 2)) Then c00 = Replace(c00, sv(i, 2) & " ", "")
    Next i
 Sheets("info").Cells(48, 5).Resize(UBound(Split(c00))) = Application.Transpose(Split(c00))
End Sub
 
HSV
was zeker niet de bedoeling want allen waren / zijn bruikbaar doch
de VBA van Edmoor kon ik een beetje lezen als "leek in VBA" vandaar dat ik me rechtstreeks richtte aan hem.
bedankt voor de snelle service
 
Uiteraard is dat dan ook beter om het onder de knie te krijgen.
Even op @edmoor wachten.
 
Dan zul je 'Join' ook niet begrijpen vermoed ik.
Code:
c00 = Join(Application.Transpose(Sheets("personeel").Range("A5:A13"))) & " "
Join heeft als default een spatie " " Join(iets," ")
c00 wordt met bovenstaande "E1 E2 E3 E4 E5 E6 E7 E8 E9 "
Aan het eind van die string staat nu ook een spatie door de & " ".
In de vergelijking 'Instr' wordt er gekeken of sv(i,2) in c00 zit.
Is dat het geval, vervang dan de waarde van sv(i,2) incl. de spatie uit c00 door niets.

Zo wordt c00 aan het eind van de code "E2 E3 E4 E6 "
Split heeft ook als default een spatie om te gaan scheiden op die spatie in c00.
zo wordt...
Code:
resize(UBound(Split(c00)))
...resize(4).

Kan ook zo geschreven worden.
Code:
resize(UBound(Split(c00," ")))
Maar zoals ik al schreef is de spatie standaard en kan weggelaten worden.

Ik hoop dat je er zo een beetje uitkomt.
 
Hallo Harry,

ik geraak er niet uit :(
heb het omgebouwd naar de werkelijke excelsheet en krijg het daar niet goed :(
bestaat er een mogelijkheid om u te mailen buiten dit forum om daar ik de originele excel niet mag publiceren wegens bedrijfsgegevens ?
vriendelijke groeten
kris
 
Privé mailen doen we niet aan.
Plaats een gelijkend voorbeeldbestand zonder gevoelige info.
 
ik heb het werkend gekregen :)
nu wil ik nog één ding aanpassen...
Hoe kan ik de code bij "info" nu vervangen door de naam uit tabblad "personeel"
in bijlage het aangepaste voorbeeld file

hierbij de code uit mijn file
HTML:
Dim sv, b As Long, c00 As String, datum As Date
Dim c01(500)

sv = Sheets("data").Cells(2, 1).CurrentRegion
c00 = Join((Application.Transpose(Sheets("chauffeurs").Range("A2:A293"))), "$")

datum = Sheets("info").Cells(1, 4)
    For b = 2 To UBound(sv)
      If sv(b, 5) = datum And InStr(c00, sv(b, 13)) Then c00 = Replace(c00, sv(b, 13) & "$", "$")
    Next b   
    For zzz = 1 To UBound(Split(c00, "$"))
      If Split(c00, "$")(zzz) <> "" And InStr(Split(c00, "$")(zzz), "E") Then
         c01(zzt) = Split(c00, "$")(zzz)
         zzt = zzt + 1
      End If
    Next zzz     
Sheets("info").Cells(90, 4).Resize(UBound(c01()) + 1) = Application.Transpose(c01())

Bekijk bijlage help vergelijken_goed.xlsm
 
Verkeerd bestand geplaatst?
Ik begrijp helaas niets van je vraag.
 
HSV,

in de bijlage staat u script die werkt op het voorbeeld
kunt ge u script even aanpassen zodat in het voorbeeld de namen getoond worden ipv E.. in tabblad info
nadien kijk ik dan om mijn code bij te werken met delen uit u script.

groeten
kris
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan