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

Ingewikkeld excel lookup probleem - graag jullie hulp

Status
Niet open voor verdere reacties.

alexca

Gebruiker
Lid geworden
15 jul 2011
Berichten
7
Beste,

Zouden jullie mij kunnen helpen met het volgende excel probleem ? Ik heb een data sheet die ik adhv een lookup-functie wil sorteren (het formaat van de data kan niet worden aangepast).

De sheet kent de volgende indeling:

**********A***************B***************** C
1/1/11****10*******1/1/11***10********2/1/11****10
2/1/11****20 *******3/1/11** 25********4/2/11****30
3/1/11****30


Ik wil adhv een lookup het volgende resultaat berijken

*************A**********B******************C
1/1/11********10*********10
2/1/11********20****************************10
3/1/11********30*********25
4/1/11**************************************30

Weet iemand welke functie ik moet gebruiken om dergelijk resultaat te vinden

************A
1/1/11*******= ?

Alvast bedankt voor jullie hulp.

Met vriendelijke groet,

Alexander
 
Laatst bewerkt:
En nu moeten wij dat allemaal overtypen en uitwerken?
 
Hallo,

Misschien een voorbeeldbestand posten met wat je hebt en hoe het moet worden?

Kees
 
Zo,

Of ga ik te kort door de bocht ?

Joske
 

Bijlagen

  • 150711 Ingewikkeld excel lookup probleem.xls
    27,5 KB · Weergaven: 56
Alvast bedankt voor de inspanning.

Het probleem is dat werkelijke data sheet, 52 tijdsreeksen bevat en zeker 50 verschillende waarden (A,B,C,.... = 50 ). (of zelf meer)

De data file is output van een ander programma. (deze output copy-past ik in een sheet Data)

Daarnaast zou ik een sheet hebben om de berekingen te maken. In deze sheet wens ik enkel de bovenste rij ( in het voorbeeld rij 7) te wijzigen, (dit gezien de namen van de waarden: A,B,C, ... telkens zullen wijzigen telkens er nieuwe data wordt ingeplakt)

De bedoeling is dat excel automatisch de data gaat zoeken voor (A,B,C ... ) voor de betreffende tijdswaarde.

Gezien dit probleem kadert in een groter geheel van berekeningen, zoek ik een oplossing die me toelaat geen formules te wijzigen.
 
Alexca,

kun je dan niet beter zorgen dat de datum allemaal in kolom 1 wordt gezet.

het getal komt dan in kolom 2

en de letter in kolom C.

daarna ben je met filters (in combinatie met formules) heel flexibel om deze gegevens op te halen.

dus misschien moet de insteek zijn om de data anders binnen te krijgen.
 
De data is output van een ander programma en het zou te tijdrovend zijn om telkens deze data aan te passen
 
misschien is het dan een idee om de externe data aan te (laten) passen.

Code:
De data file is output van een ander programma. (deze output copy-past ik in een sheet Data)

hoe vind de copy-past plaats?
is dit het hele werkblad in 1 keer of worden de kolomen ieder keer opnieuw opgehaald?
in dat laatste geval kun je de gegevens zelf (met copy-past) onder elkaar plaatsen.

Wil je ook even aangeven waarom de lay out er op deze manier uit moet komen te zien.
de Letters in aparte kolommen.

Waarom vraag ik dit
met de indeling zoals in in #7 heb aangegeven ben je waarschijnlijk veel flexibeler.

P.s. met VBA is je probleem waarschijnlijk wel op te lossen, maar daar kan ik je (op dit moment) onvoldoende mee helpen.
 
Laatst bewerkt:
Ik zou toch wel eens zo'n werkblad willen zien met 52 tijdsreeksen en 50 waarden en wat dan het uiteindelijke resultaat moet worden, want ik heb serieus mijn twijfels of je zulk een wirwar van gegevens op een ordentelijke manier geordend krijgt, VBA of niet.
Zelfs je eigen voorbeeld in post#1 is niet consistent, hoe moeten wij het dan op z'n plaats krijgen ?
Je plaatst 30 in kolom C bij 4/11 maar bij bv 3/11 heb je waarden in A en B maar bij je oplossing vind je alleen A terug, bij 2/11 al juist hetzelfde ?????
 
Laatst bewerkt:
Ik post maandag een voorbeeld van de volledig file zodat jullie een beter beeld krijgen van wat ik juist wil bereiken.
 
Je moet je probleem met behulp van een datareeks oplossen.
dus niet matrix a/b/c met datum/waarde,maar een lijst letter/datum/waarde, waarvan je één grote tabel maakt.

dus :

A\1-1-2011\10
A\3-1-2011\20
B\2-1-2011\30

Nu kun je sorteren op "letter,datum,waarde"

ook kun je je data in een (draai)tabel zetten, met de datum als rijen, en de "letters" als kolommen en voila

laat maar weten als je daar nog hulp bij nodig hebt.

gebruik onderstaande code voor een dergelijk tabel in met jouw voorbeeldbestand

Code:
Option Explicit

Sub gosort()
Dim rngLetter As Range
Dim strLetter As String
Dim lngRow
Dim lngDataRow As Long
Dim varSheet As Variant
Dim varData As Variant

    Set rngLetter = Sheets("Sheet1").Range("B2")
    
    ReDim varSheet(1 To 3, 1) As Variant
    
    Do While rngLetter <> ""
        
        strLetter = rngLetter
        lngRow = rngLetter.End(xlDown).Row
        varData = Range(rngLetter.Offset(1, -1), _
                    rngLetter.Offset(lngRow - 2))

        For lngRow = 1 To UBound(varData)
        
            lngDataRow = lngDataRow + 1
            ReDim Preserve varSheet(1 To 3, lngDataRow) As Variant
            varSheet(1, lngDataRow) = strLetter
            varSheet(2, lngDataRow) = varData(lngRow, 1)
            varSheet(3, lngDataRow) = varData(lngRow, 2)
        
        Next
        
        Set rngLetter = rngLetter.Offset(, 2)
        
    Loop

    Sheets(2).Range("a1").Resize(lngDataRow + 1, 3) = _
        WorksheetFunction.Transpose(varSheet)

End Sub
 
Laatst bewerkt:
Ik vraag mij eigenlijk af wat je verder met die data wil doen??
Wens je selectief op datum en/of op letter iets uit de data te halen, dan ben ik 100% akkoord met wat Mark XL voorstelt, alles in één grote tabel met 3 kolommen plaatsen en via draaitabellen data ophalen. Andere code dan dat van Mark met zelfde resultaat in bijgesloten file :D

Wens je echter XY grafieken te maken van de letters dan zie ik niet in waarom je je data moeten verplaatsen zoals je voorstelt. Integendeel zoals je ze nu hebt kan je héél eenvoudig grafieken maken. Via "dynamic charts" kan je zelfs 1 bepaalde letter in de grafiek plaatsen, verander de inhoud van cel A1 (enkel even getallen aub) en de grafiek past zich aan. Moet nog verder uitgewerkt worden naar drop down van mogelijke letters!

Bekijk bijlage DynamicGraph.xlsm
 
hallo misschien heb je iets aan deze formule:
Code:
Function Verzamel(Hor, Vert, Gebied As Range) As String
    Dim K As Integer: Dim R As Integer
    Verzamel = ""
    For K = 2 To Gebied.Columns.Count Step 2
        If Gebied(1, K) = Hor Then
            For R = 2 To Gebied.Rows.Count
                If Gebied(R, K - 1) = Vert Then
                    If Verzamel <> "" Then Verzamel = Verzamel & " "
                    Verzamel = Verzamel & Gebied(R, K)
                End If
            Next R
        End If
    Next K
End Function

als je zelf de formule gebruikt vergeet dan de $ tekens niet

groet sylvester
 

Bijlagen

  • Book1 (4).xls
    38,5 KB · Weergaven: 35
Laatst bewerkt:
Het kan inderdaad met een ingewikkelde formule.
Ik vond zosnel:
Code:
=INDEX(Data!$A$24:$BN$75;VERGELIJKEN($A2;INDIRECT("Data!R24K"&(KOLOM()-2)*4+1&":R75K"&(KOLOM()-2)*4+1;ONWAAR);0);VERGELIJKEN(Sheet1!B$1;Data!$A$6:$BN$6;0))"

plaats deze formule in Sheet1,cel b2 en verder

of zonder "#N/B" als de datum niet wordt gevonden:
Code:
=ALS(ISNB(VERGELIJKEN($A2;INDIRECT("Data!R24K"&(KOLOM()-2)*4+1&":R75K"&(KOLOM()-2)*4+1;ONWAAR);0));0;INDEX(Data!$A$24:$BN$75;VERGELIJKEN($A2;INDIRECT("Data!R24K"&(KOLOM()-2)*4+1&":R75K"&(KOLOM()-2)*4+1;ONWAAR);0);VERGELIJKEN(Sheet1!C$1;Data!$A$6:$BN$6;0)))

#N/B blijft wel staan als de ISIN code ontbreekt. dat lijkt me wel zo handig.

en vanaf excel 2007 wellicht zonder #N/B :
en dan betekent 0 "data ontbreekt"

Code:
=ALS.FOUT(INDEX(Data!$A$24:$BN$75;VERGELIJKEN($A2;INDIRECT("Data!R24K"&(KOLOM()-2)*4+1&":R75K"&(KOLOM()-2)*4+1;ONWAAR);0);VERGELIJKEN(Sheet1!B$1;Data!$A$6:$BN$6;0));0)
 
Laatst bewerkt:
Opgelost

Bedankt voor de hulp.

Ik lost het op met behulp van de oplossing van Mark xl.

Nogmaals bedankt voor de hulp,

mvg

Alexander
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan