Rijen uit tabel laten weergeven

Status
Niet open voor verdere reacties.

remcop1989

Gebruiker
Lid geworden
29 mrt 2012
Berichten
492
Zie bestand in bijlage.

Als tabblad "Kort", cel I2 de datum van vandaag bevat, dan moet hij op tabblad "Terugbellen" de hele rij 2 overgenomen worden.

Dit kan natuurlijk met de formule:

Code:
=ALS(Kort!$I2<=VANDAAG();ALS(Kort!$A2="";"";Kort!$A2);"")

Maar dan geeft hij alle rijen weer. De rijen die niet de datum van vandaag in I2 hebben staan worden als leeg of ONWAAR weergegeven.

Bedoeling is dat ik op tabblad "Terugbellen" enkel rijen heb van bedrijven die teruggebeld moeten worden "Vandaag".

Kan iemand mij op weg helpen?

Ik vermoed dat ik met een range en VLookup moet gaan werken, maar dat heb ik nog nooit gedaan.
 

Bijlagen

Wellicht moet ik het wat verduidelijken.

Zie dit voorbeeld

Op tabblad "Terugbellen":
Enkel die rijen uit tabblad "Bedrijven" weergeeft die in kolom J de waarde "Terugbellen" bevatten.

Dus in het voorbeeld:
Op tabblad "Bedrijven" staat de waarde terugbellen in de rijen: 2, 3, 5, 7 en 8.
Op tabblad "Terugbellen" moeten nu enkel deze rijen weergegeven worden.

Ik heb ze er nu even heen gekopieerd, maar ik hoop dat dit ook automatisch kan.
 
Remco,

Het gebruik van range en Vlookup is heel lastig, er zijn eigenlijk twee mogelijkheden.
- Filteren van de gegevens, zet op de tabel een filter en filter alleen de datum van vandaag.
- Maak een draaitabel waarbij de de terugbel datum in het filter zet en de datum van vandaag kiest.

Veel Succes.
 
Ik heb me nu bedacht:

Op werkblad "notities" hou ik bij wie wanneer moet worden teruggebeld. Dit doe ik dmv een datum in de kolom "terugbellen". Nu wil ik op werkblad "startscherm" in een bepaald bereik enkel die rijen uit werkblad "notities" weergeven die de datum vandaag (of eerder) weergeven.

Wie van jullie heeft tips hiervoor?

Ps. Ik zal straks een voorbeeld posten.

EDIT:
Zie het voorbeeld in de bijlage.

Op werkblad "Start" wil ik dus onder de kopjes "Bedrijfsnaam, Contactpersoon, Onderwerp, Datum, Activiteit" die regels uit werkblad "activiteiten" weergeven die in kolom "opvolgen" de datum van vandaag (of eerder) bevatten.

Hoe krijg ik dit voor elkaar?
Ik heb het geprobeerd met verticaal zoeken, maar dat lukt niet echt. Zoeken op internet helpt mij ook niet.

Een draaitabel geeft overigens niet het resultaat dat ik wil.


EDIT2:
Ik ben iets tegengekomen op dit forum (en andere fora) over meervoudig verticaal zoeken met behulp van matrixformules. Hier heb ik nog nooit mee gewerkt.....wie kan mij helpen?
 

Bijlagen

Laatst bewerkt:
Remcop1989,

Ik vind je vraag uiterst lastig. In het bestand CRM dat je meestuurt staat geen tabblad "Notities" dus ik heb geen idee wat je hiermee wilt.
Verder zit in het CRM bestand geen enkele data waardoor wijzelf moeten gaan uitzoeken hoe je gegevens er uit zouden kunnen zien en als
we willen testen verlang je van ons dat wij dat voor je gaan bedenken?

Het is alleen met behulp van een macro mogelijk om de gegevens zoals je die onder Edit beschrijft op het tabblad "Start" te krijgen.
Ook met meervoudig verticaal zoeken en matrixformules kom je hier niet uit. Een draaitabel zou mogelijk zijn maar de selectie
op datum zou je dan moeten opnemen door een kolom toe te voegen met de vraag of de datum voor of na de huidige datum ligt.


Veel Succes.
 
Hartelijk dank voor het bericht. Je hebt gelijk.

Ik heb wat uitgevogeld. Zie de bijlage.

Het gaat om de tabbladen "Start" en "Activiteiten".

Ik gebruik op tabblad "Activiteiten" de volgende code:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim Rowcount As Integer
    

    Rowcount = Range("F" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("F2:F" & Rowcount)) Is Nothing Then
            Select Case Target
            Case vbNullString, ""
                'Sheets("Start").Range("A6" & Target.Row).Value = ""
                Sheets("Start").Range("A6" & Target.Row).Value = ""
            Case Is <= Date
                'Sheets("Start").Range[B]("A6" & Target.Row[/B]).Value = Sheets("Activiteiten").Range("A" & Target.Row).Value
                Sheets("Start").Range("A6" & Target.Row).Value = Sheets("Activiteiten").Range("A" & Target.Row).Value
            Case Else
                'Sheets("Start").Range("A6" & Target.Row).Value = ""
                Sheets("Start").Range("A6" & Target.Row).Value = ""
        End Select
    End If

End Sub


Als ik op tabblad "Activiteiten" een regel toevoeg en in kolom "Opvolgen" de datum van vandaag (of eerder) invoer, wordt die regel netjes op tabblad "start" weergegeven.
Door het hierboven vetgedrukte stukje code voert hij cel A3 van tabblad "Activiteiten" in op cel A63 van tabblad "Start".

Ik wil echter dat hij begint met vullen bij regel "A6" en dan steeds op een lege regel.

Ik heb al diverse dingen geprobeerd (ook met Offset, xlUp en xlDown), maar niets schijnt te werken.

Wie duwt mij in de juiste richting?
 

Bijlagen

Ik heb nu het volgende stukje code:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim Rowcount As Integer
    

    Rowcount = Range("F" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("F2:F" & Rowcount)) Is Nothing Then
            Select Case Target
            Case vbNullString, ""
               Sheets("Start").Range("A").End(xlDown).Offset(1, 0).Value = ""
                
            Case Is <= Date
               Sheets("Start").Range("A").End(xlDown).Offset(1, 0).Value = Sheets("Activiteiten").Range("A" & Target.Row).Value
            Case Else
               Sheets("Start").Range("A").End(xlDown).Offset(1, 0).Value = ""
        End Select
    End If

End Sub

Deze geeft de fout melding "Fout 1004 - Door de toepassing of door object gedefinieerde fout".

Deze doet zich voor op de regel:

Code:
Sheets("Start").Range("A").End(xlDown).Offset(1, 0).Value = Sheets("Activiteiten").Range("A" & Target.Row).Value

Wat is er fout hieraan?
 
Remcop1989

- Maak van Sheets("Start").Range("A").End(xlDown).Offset(1,0).value, Sheets("Start").Range("A5").End(xlDown).Offset(1,0).value
Voor de xlDown moet je een specifieke cel hebben, niet een hele kolom en je moet beginnen bij A5 omdat daar de koptekst begint.
Case vbNullString en de Case Else in onnodig omdat je toch niets invult.
- Je kopieert alleen de laatst toegevoegde regel, wat doe je met de regels als de datum voorbij is?
- Je kopieert alleen kolom A van de betreffende regel, kopieer gelijk de hele regel.
- Door het formulier wordt de datum in de kolom D geplaatst en zal de datum dus nooit kloppen als je deze in kolom F gaat zoeken.
- Door het formulier wordt de datum als tekst ik kolom D geplaatst wijzig
Worksheets("Activiteiten").Range("D" & appendRow).Value = txtDatum in
Worksheets("Activiteiten").Range("D" & appendRow).Value = DateValue(txtDatum)
Je kunt geen datum met een tekst vergelijken.

Veel Succes,
 
Hallo Elsendoorn2134, Hartelijk dank voor jou reactie. Dat helpt! :)

Ik had net de volgende werkende code:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim Rowcount As Integer
    
    Rowcount = Range("F" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("F2:F" & Rowcount)) Is Nothing Then
        Select Case Target
             Case Is <= Date
                 Sheets("Start").Range("B" & Rows.Count).End(xlUp).Offset(1).Value = Sheets("Activiteiten").Range("A" & Target.Row).Value
                Sheets("Start").Range("C" & Rows.Count).End(xlUp).Offset(1).Value = Sheets("Activiteiten").Range("B" & Target.Row).Value
                Sheets("Start").Range("D" & Rows.Count).End(xlUp).Offset(1).Value = Sheets("Activiteiten").Range("C" & Target.Row).Value
                Sheets("Start").Range("E" & Rows.Count).End(xlUp).Offset(1).Value = Sheets("Activiteiten").Range("D" & Target.Row).Value
        End Select
    End If

End Sub

Deze code kopieert netjes datgeen van tabblad "activiteiten" naar steeds een nieuwe regel op tabblad "start". Ik kan me alleen voorstellen dat het kopieren van een hele regel makkelijker gaat dan hierboven door mij opgesteld.
Ook ziet deze regel niet als er ergens op tabblad "start" een regel tussendoor leeg is.

Zie voor bovenstaande: http://www.mijnbestand.nl/Bestand-X74U68NXSA4E.xlsm


Zie voor onderstaande: http://www.mijnbestand.nl/Bestand-HYXCYWJ48TOZ.xlsm

- Maak van Sheets("Start").Range("A").End(xlDown).Offset(1,0).value, Sheets("Start").Range("A5").End(xlDown).Offset(1,0).value
Voor de xlDown moet je een specifieke cel hebben, niet een hele kolom en je moet beginnen bij A5 omdat daar de koptekst begint.

Die code geeft "Fout 1004 tijdens uitvoering: Door de toepassing of door object gedefinieerde fout"

dit gebeurd op regel(s):

Code:
Sheets("Start").Range("A5").End(xlDown).Offset(1).Value = Sheets("Activiteiten").Range("A" & Target.Row).Value

Case vbNullString en de Case Else in onnodig omdat je toch niets invult.
- Je kopieert alleen de laatst toegevoegde regel, wat doe je met de regels als de datum voorbij is?

Indien ik vbNullString en Case Else weglaat, krijg ik een melding wanneer een datum in kolom F verwijderd wordt. Ik moet er nog iets op verzinnen wat ik doe zodra een activiteit is opgevolgd. Let wel: het kan zijn dat een datum voorbij is, maar de activiteit nog niet opgevolgd. De activiteit moet dan gewoon blijven staan op tabblad start.

- Je kopieert alleen kolom A van de betreffende regel, kopieer gelijk de hele regel.

Zie zometeen onderstaande code

- Door het formulier wordt de datum in de kolom D geplaatst en zal de datum dus nooit kloppen als je deze in kolom F gaat zoeken.[/quote

In kolom D wordt de datum van de huidige activiteit geplaatst. De datum waarop deze opgevolgd moet worden in de toekomst staat in kolom F. De datum in kolom F wil ik hebben.

- Door het formulier wordt de datum als tekst ik kolom D geplaatst wijzig
Worksheets("Activiteiten").Range("D" & appendRow).Value = txtDatum in
Worksheets("Activiteiten").Range("D" & appendRow).Value = DateValue(txtDatum)
Je kunt geen datum met een tekst vergelijken.

Uitgevoerd. Zie onderstaande code.



Ik heb nu de volgende code in totaal, na bovenstaande aanpassingen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim Rowcount As Integer
    
    Rowcount = Range("F" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("F2:F" & Rowcount)) Is Nothing Then
        Select Case Target
            Case Is <= Date
                Sheets("Start").Range("A5").End(xlDown).Offset(1).Value = Sheets("Activiteiten").Range("A" & Target.Row).Value
         End Select
    End If

End Sub


ik hoop dat e.e.a. duidelijk is zo en wacht graag je reactie af.
 

Bijlagen

Laatst bewerkt:
Remco1989,

Je kunt de code vervangen door de volgende:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim Rowcount As Integer
    
    Rowcount = Range("F" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("F2:F" & Rowcount)) Is Nothing Then
        If Target.Value <= Date Then
            Sheets("Activiteiten").Range("A" & Target.Row & ":D" & Target.Row).Copy _
            Destination:=Sheets("Start").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
        End If
    End If

End Sub

Dit kopieert de cellen van kolom A tot kolom D over de regel.

Veel Succes.
 
Ik ga het vanavond gelijk proberen.

Ik ben nu aan het bedenken hoe ik wil handelen nadat een activiteit is opgevolgd. Wat ik het liefste zie is het volgende:

- op tabblad "activiteiten" wordt de datum van opvolgen in kolom f weggehaald OF een markering in de (nog te maken) kolom G aangegeven. Dit ten teken dat de activiteit op die regel opgevolgd is

- dit betekent dat hij niet meer op tabblad "start" hoeft te staan.

- excel zou nu de betreffende regel op tabblad start weg moeten halen.

Ik denk hierbij bijvoorbeeld aan een uniek kenmerk voor iedere activiteit dat op beide tabbladen weergegeven wordt. Dit zou ik dan met VLookup weg kunnen laten halen.

Is dit logisch / is er een betere oplossing?
Wie heeft suggesties voor het "delete-event"?
 
Oké, ik ben weer wat verder......

Ik kan dus nu op tabblad "Start" zien welke activiteiten opgevolgd (nagebeld/gemaild) moeten worden.

Ik zoek nu een methode om deze activiteiten op het tabblad "Start" op te volgen.

Waar ik aan denk:
- op tabblad "Start" klik ik b.v. op de activiteit
- ik krijg dan alle activiteiten bij het betreffende bedrijf (en contactpersoon) te zien
- ik voer een nieuwe activiteit in
- de oude wordt gemarkeerd als "opgevolgd" en kan nu dus van het tabblad "Start" verdwijnen"


Wat ik tot nu toe heb:

Middels deze code geeft hij iedere activiteit een unieke waarde:

Code:
    If appendRow = 2 Then
    Worksheets("Activiteiten").Range("E" & appendRow).Value = "Activiteit 1"
    Else
    Worksheets("Activiteiten").Range("E" & appendRow).Value = "Activiteit " & Split(Worksheets("Activiteiten").Range("E" & appendRow).Offset(-1, 0).Value)(1) + 1
    End If

Die waarde wordt vervolgens ook opgeslagen op tabblad "activiteiten" en mee overgenomen naar tabblad "start".


Middels de volgende code kan ik bijhouden of een activiteit opgevolgd is of niet:

Code:
    If OptionButton3.Value = True Then
    Worksheets("Activiteiten").Range("H" & appendRow).Value = "Nee"
    Else
    Worksheets("Activiteiten").Range("H" & appendRow).Value = "Ja"
    End If

Indien de waarde "ja" ingevuld wordt hoeft de betreffende activiteit niet meer op tabblad "Start" te staan.

Waar ik nog mee zit:

- hoe kan ik het bovenstaande het beste werkbaar maken?
- ik denk dan bijvoorbeeld aan hoe ik op basis van een activiteit die opgevolgd moet worden alle activiteiten van het betreffende bedrijf en contactpersoon te zien krijg etc.

Wie helpt mij verder?
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan