• 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.

Excel waardes laten zoeken in verschillende tabbladen van ander bestand excel 2007

Status
Niet open voor verdere reacties.

abevleeming

Gebruiker
Lid geworden
30 jan 2012
Berichten
436
Na hier vele malen zonder vraag te hoeven stellen geholpen te zijn kwam ik er bij deze toch niet uit.. :confused:

Ik wil graag d.m.v een formule of macro (ik weet niet of het met een formule kan) excel naar waardes laten zoeken binnen verschillende tabbladen van een ander bestand (in dit geval map 1). Ik loop hierbij tegen een paar problemen op, zoals het feit dat het mij niet lukt om excel te laten zoeken in verschillende mappen binnen een bestand. Ook de opmaak van het doelbestand is vervelend omdat de koppen uit samengevoegde cellen bestaat.
Verder moet hij alleen de waardes nemen waarvan de woordensamenstelling van de productomschrijving exact hetzelfde is. Dit komt omdat in het ene bestand zijn tussen woorden extra spaties gebruikt. Ik besef dat dit laatste misschien wel onmogelijk is.

Ik heb een voorbeeld gemaakt waarbij map 1 de waarden heeft en map 2 de waarden "nodig" heeft.

Bekijk bijlage Map1.xlsBekijk bijlage Map2.xls

Verder ben ik enigzins ervaren met formules maar met macro's ben ik een leek. Het zou fantastisch zijn als iemand me dan ook meteen kon vertellen wat ik allemaal moet wijzigen.;)

Alvast heel erg bedankt en mijn enorme waardering en respect voor degene die hier veelvuldig op het panel aanwezig zijn om al deze vragen te beantwoorden, ze hebben me al vaak geholpen!

Abe
 
Laatst bewerkt:
Beste abevleeming ;)

Plak onderstaande formule in Map2.xls in cel C2 en sleep deze naar beneden.

Code:
=ALS(ISFOUT(VERT.ZOEKEN(A2;'[Map1(1).xls]4.16'!$A$3:$C$6;3;ONWAAR));"";VERT.ZOEKEN(A2;'[Map1(1).xls]4.16'!$A$3:$C$6;3;ONWAAR))

1 nadeel, voor deze formule moeten beide bestanden open staan.

Indien Map1.xls in je documenten staat, neem dan volgende formule naargelang jouw pad natuurlijk.

Code:
=ALS(ISFOUT(VERT.ZOEKEN(A2;'C:\Users\Danny\Documenten\[Map1(1).xls]4.16'!$A$3:$C$6;3;ONWAAR));"";VERT.ZOEKEN(A2;'C:\Users\Danny\Documenten\[Map1(1).xls]4.16'!$A$3:$C$6;3;ONWAAR))

Groetjes Danny. :thumb:
 
Beste abevleeming ;)

Plak onderstaande formule in Map2.xls in cel C2 en sleep deze naar beneden.

Code:
=ALS(ISFOUT(VERT.ZOEKEN(A2;'[Map1(1).xls]4.16'!$A$3:$C$6;3;ONWAAR));"";VERT.ZOEKEN(A2;'[Map1(1).xls]4.16'!$A$3:$C$6;3;ONWAAR))

1 nadeel, voor deze formule moeten beide bestanden open staan.

Indien Map1.xls in je documenten staat, neem dan volgende formule naargelang jouw pad natuurlijk.

Code:
=ALS(ISFOUT(VERT.ZOEKEN(A2;'C:\Users\Danny\Documenten\[Map1(1).xls]4.16'!$A$3:$C$6;3;ONWAAR));"";VERT.ZOEKEN(A2;'C:\Users\Danny\Documenten\[Map1(1).xls]4.16'!$A$3:$C$6;3;ONWAAR))

Groetjes Danny. :thumb:

Hoi Danny,

Heel erg bedankt voor je antwoord. Ik zit nu alleen nog steeds met het probleem dat excel alleen de informatie pakt uit het tabblad 4.16 en niet uit alle bladen.
Overigens nog een extra uitdaging voor de experts: Het zou nog mooier zijn als excel de productomschrijving rood kleurt als het niet in map1 te vinden is...
 
Dat ziet er fantastisch uit! kan je me toevallig ook beknopt uitleggen hoe en waar ik deze VBA kan wijzigen zodat ik het ergens anders kan toepassen?

Ook krijg ik na de aanpassingen een melding "400"
 
Laatst bewerkt:
In het werkblad 'uitvoer' heb ik de VBA toegevoegd. Ga na je vb-project (ALT+F11) en dubbelklik op het 'blad1' iccoontje uit je 'projectexplorer'.
daar staat in:
Code:
Public Sub GetData()
Dim readBook As Workbook
Dim readSheet As Worksheet
Dim currentCell As Range
Dim searchFor As String
Dim i As Integer

Set readBook = Workbooks.Open(Sheets("config").Range("config.filename"))
For Each currentCell In ThisWorkbook.Sheets("Blad1").Range("uitvoer.types")
    searchFor = currentCell.Value
    For Each readSheet In readBook.Sheets
        i = ThisWorkbook.Sheets("config").Range("config.startrow")
        Do Until readSheet.Cells(i, ThisWorkbook.Sheets("config").Range("config.searchcolumn")) = ""
            If readSheet.Cells(i, ThisWorkbook.Sheets("config").Range("config.searchcolumn")) = searchFor Then
                currentCell.Offset(0, 2) = readSheet.Cells(i, ThisWorkbook.Sheets("config").Range("config.copycolumn"))
            End If
            i = i + 1
        Loop
    Next readSheet
Next currentCell
readBook.Close False
End Sub
 
oh, trouwens de melding; in mijn code ga ik er even van uit dat het 'data.xls' is gesloten. Op het moment dat dit model 'open' is krijg je waarschijnlijk de foutmelding.
Je kunt dit omzeilen door
Code:
Set readBook = Workbooks.Open(......)
aan te passen :) - bijvoorbeeld door if ... is open then ... staat wel het eea op dit forum hier
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan