Vba, Excel

Status
Niet open voor verdere reacties.

bast1

Gebruiker
Lid geworden
14 okt 2013
Berichten
8
Ik ben nieuw met vba en ik vroeg mij af hoe ik dit anders kan doen.
Ik wil dat hij kijkt of er een waarde staat in tabblad 'info' in kolom B/C/D/E (code hier onder is alleen b/c/d dat weet ik)
Vervolgens deze opzoekt in tabblad 'data' en invult in een tabblad naar keuze.
Nu heb ik 2 vragen.
Hoe kan ik dit efficiënter schrijven zonder voor elke cel een heel verhaal te typen
en 2. Als er in mijn tabblad info een waarde staat maar de vlookup hem niet kan vinden krijg ik een #N/A error. Hierdoor heeft hij de getallen die hij wel heeft gevonden niet weer. Hoe kan ik er voor zorgen dat hij de getallen die hij al had wel weergeeft en de N/A negeert.



Code:
Set wkb = ActiveWorkbook
Set wks = ActiveSheet
Set sel = Selection
shname = InputBox("Voer de eerste 3 letters van de maand in")
Sheets(shname).Select
If wkb.Sheets("info").Cells(1, 2) <> 0 Then
Sheets(shname).Cells(1, 8) = [VLOOKUP(VLOOKUP(A1,info!A:D,2,FALSE),Data!a:d,2,FALSE)]
If wkb.Sheets("info").Cells(1, 3) <> 0 Then
Sheets(shname).Cells(1, 8) = [VLOOKUP(VLOOKUP(A1,info!a:d,3,FALSE),data!a:d,2,FALSE)] + [VLOOKUP(VLOOKUP(A1,info!A:D,2,FALSE),Data!a:d,2,FALSE)]
If wkb.Sheets("info").Cells(1, 4) <> 0 Then
Sheets(shname).Cells(1, 8) = [VLOOKUP(VLOOKUP(A1,info!a:d,4,FALSE),data!a:d,2,FALSE)] + [VLOOKUP(VLOOKUP(A1,info!A:D,2,FALSE),Data!a:d,2,FALSE)] + [VLOOKUP(VLOOKUP(A1,info!a:d,3,FALSE),data!a:d,2,FALSE)]
End If
End If
End If

If wkb.Sheets("info").Cells(2, 2) <> 0 Then
Sheets(shname).Cells(2, 8) = [VLOOKUP(VLOOKUP(A2,info!A:D,2,FALSE),Data!a:d,2,FALSE)]
If wkb.Sheets("info").Cells(2, 3) <> 0 Then
Sheets(shname).Cells(2, 8) = [VLOOKUP(VLOOKUP(A2,info!a:d,3,FALSE),data!a:d,2,FALSE)] + [VLOOKUP(VLOOKUP(A2,info!A:D,2,FALSE),Data!a:d,2,FALSE)]
If wkb.Sheets("info").Cells(2, 4) <> 0 Then
Sheets(shname).Cells(2, 8) = [VLOOKUP(VLOOKUP(A2,info!a:d,4,FALSE),data!a:d,2,FALSE)] + [VLOOKUP(VLOOKUP(A2,info!A:D,2,FALSE),Data!a:d,2,FALSE)] + [VLOOKUP(VLOOKUP(A2,info!a:d,3,FALSE),data!a:d,2,FALSE)]
End If
End If
End If
If wkb.Sheets("info").Cells(3, 2) <> 0 Then
Sheets(shname).Cells(3, 8) = [VLOOKUP(VLOOKUP(A3,info!A:D,2,FALSE),Data!a:d,2,FALSE)]
If wkb.Sheets("info").Cells(3, 3) <> 0 Then
Sheets(shname).Cells(3, 8) = [VLOOKUP(VLOOKUP(A3,info!a:d,3,FALSE),data!a:d,2,FALSE)] + [VLOOKUP(VLOOKUP(A3,info!A:D,2,FALSE),Data!a:d,2,FALSE)]
If wkb.Sheets("info").Cells(3, 4) <> 0 Then
Sheets(shname).Cells(3, 8) = [VLOOKUP(VLOOKUP(A3,info!a:d,4,FALSE),data!a:d,2,FALSE)] + [VLOOKUP(VLOOKUP(A3,info!A:D,2,FALSE),Data!a:d,2,FALSE)] + [VLOOKUP(VLOOKUP(A3,info!a:d,3,FALSE),data!a:d,2,FALSE)]
End If
End If
End If
 
Laatst bewerkt door een moderator:
Bast1,

Dit is alleen op te lossen door de Vlookup formules in te bedden in een als(vraag;waar;onwaar) formule.
Code:
=VERT.ZOEKEN(VERT.ZOEKEN(A2;info!A:D;4;ONWAAR);data!A:D;2;ONWAAR)
moet je dan omzetten naar
Code:
=ALS(ISFOUT(VERT.ZOEKEN(VERT.ZOEKEN(A2;info!A:D;4;ONWAAR);data!A:D;2;ONWAAR));0;(VERT.ZOEKEN(VERT.ZOEKEN(A2;info!A:D;4;ONWAAR);data!A:D;2;ONWAAR)))
Dit maakt wel erg lange formules als je meerdere vertikale zoekacties achter elkaar wilt plaatsen.
Kijk dan ook voor een versie met een zelf geschreven functie.

Veel Succes.
 
Laatst bewerkt:
Plaats bij voorkeur je bestand hier en geef aan wat de bedoeling is.
Er zijn vele (wellicht handiger) methoden om te bereiken wat je wil.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan