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

Waarden met afhankelijkheden overnemen uit een matrixtabel naar een ander werkblad

Status
Niet open voor verdere reacties.

Jerom747

Gebruiker
Lid geworden
24 aug 2017
Berichten
18
Beste Helpmij.nl experts,

Ik heb een matrix tabel met de volgende opzet
Kolom A: Naam
Kolom B: datum-tijdveld (dd-mm-jj uu:mm)
Kolom C: datum-tijdveld (dd-mm-jj uu:mm)
Kolom D: logische waarde (ja/nee)

In kolom A komt eenzelfde naam verschillende malen voor met bijbehorende rijvelden in de andere kolommen (Bijv. A2 "SP", A3 "DANT", A4 "SRS", A5 "SP", A6 "SP"; A7 "SRS". enz). De gerelateerde datumvelden (bij A2 hoort B2 en C2 enz).

De bedoeling nu is dat voor elke keer dat een naam in kolom A gevonden wordt (in het voorbeeld "SP" op A2, A5 en A6) de bijbehorende datum-tijdvelden worden overgeheveld naar een ander werkblad (in dit geval naar werkblad met naam SP; zo is er voor elk voorkomende naam een apart werkblad).
Van de eerst gevonden "SP" in A worden de datumvelden neergezet in werkblad SP op L6 (waarde kolom B) resp. L7 (waarde kolom C) en de waarde uit kolom D wordt in L8 neergezet. De volgende waardes worden respectievelijk in M6, M7 en M8 enz neergezet. In het voorbeeld zijn dus de velden L6:N8 gevuld met overgenomen waarden.

Er komt echter nog een kleine complicatie bij, want de plaats waar het wordt neergezet is afhankelijk van de maand- en jaarwaarde uit kolom B. In het voorbeeld worden alle waarden uit kolom B met de waarde dd-01-17 in de rijen 6, 7 en 8 (vanaf kolom L en volgende dus)

Als de waarde dd-02-17 wordt dan blijven de kolommen gelijk, maar veranderen de rijen waarin de waarden moeten worden neergezet nl. in L15, L16 en L17 voor de eerst SP met deze maand-jaarwaarde en M15, M16 en M17 voor de volgende enz.

Welke formules moet ik hiervoor gebruiken of hoe pak ik dit het makkelijkst aan?
Alvast mijn dank
 

Bijlagen

Laatst bewerkt:
Wat is de overweging om een goed opgebouwde tabel te verkl... naar ...
Voeg de velden van de 'splits' tabellen toe aan de basistabel en gebruik alle fiterfaciliteitnen die een listobject biedt.
 
Jerom,

welkom op Helpmij.nl!

Als je dit perse wilt, kan het op deze wijze....
 

Bijlagen

Voeg de velden van de 'splits' tabellen toe aan de basistabel en gebruik alle fiterfaciliteitnen die een listobject biedt.

Dank voor je reactie.
De overweging om het over te nemen is, dat ik een excel nobody ben en dit voor mij de oplossing leek om gegevens automatisch door te rekenen, zodat er grafieken/tabellen gegenereerd kunnen worden voor een managementrapportage

Met 'splits'tabellen bedoel je de afzonderlijke werkbladen?
En vervolgens extra kolommen met de formules toevoegen is gelukt. Kolom downtime incident en kolom downtime gepland onderhoud toegevoegd en ALS formule gebaseerd op ja of nee in kolom D.
Het omzetten naar percentage downtime lukt me nog niet. Hiervoor is een relatie met het aantal dagen per maand nodig. Dus het totaal van een kolom over downtime (al dan niet gefilterd op onderwerp uit kolom A) is zoveel procent van (24*7*aantal dagen in die maand).
 
Dat bedoel ik inderdaad.

Volgens mij ben je aardig op de goede weg.

Plaats je bestand en dan komt dat percentage ook wel goed.
 
Jerom,

Als je dit perse wilt, kan het op deze wijze....

Dank je wel. Ja, dit is wat ik bedoelde. Alleen de waarden worden niet op de correcte wijze neergezet als ik "sla gegevens op" doe. Er wordt twee keer dezelfde waarde gekopieerd en "ja" of "nee"wordt als een getal neergezet.
Is dit te voorkomen? Want als de waarden inderdaad goed overgenomen worden, dan is het exact wat ik voor ogen had.

Mooi geprogrammeerd, trouwens.
Zou ik nooit kunnen :(
 
Laatst bewerkt:
Dank je wel, SNB, we komen inderdaad een heel eind op de goede weg.
Als ik de formule begrijp telt deze alle niet verborgen cellen uit de bovenstaande kolom op en deelt deze door 30. In het voorbeeld zou deze door 31 gedeeld moeten worden, omdat het januari betreft, denk ik.
Hetzelfde kan ik doen voor kolom E.
Afhankelijk van het filter dat gebruikt wordt krijg ik dan de betreffende percentages te zien.
Dat houdt in dat de formule afhankelijk van welke maand gekozen wordt aangepast moet worden door te delen door 28 (of 29 in geval schrikkeljaar), 30 of 31.

Is het mogelijk om dit automatisch te laten gebeuren?
 
Het is veel leerzamer/leuker om zelf wat uit te zoeken.

PHP:
=AGGREGATE(9;5;[Downtime door incident])/DAY(EOMONTH(AGGREGATE(4;3;B2:B5);0))
 
Sorry, zelf uitzoeken doe ik ook meestal, maar soms ontbreekt de kennis en tijd. Ik ken de voldoening als het na veel proberen toch lukt en ik ook nog snap wat ik gedaan heb :)

Super bedankt voor het delen van je kennis en de tijd! Ik ga de formule invoeren en hopelijk werkt het zoals bedoeld
 
Laatst bewerkt:
Jerom,

als het nog van toepassing is, probeer dan deze eens.....
 

Bijlagen

@Haije,

Om een beetje binnen jouw code te blijven kan je het meeste wel weglaten denk ik.
Een maand heeft een nummer de verschuiving in het het bestand is steeds constant en dan kan kan je het ook met wat ingebakken functies oplossen. Alleen ter lering en vermaeck want jouw code werkt volgens mij correct. En wat werkt dat werkt.:d
Code:
Sub opslaan()
  Do Until [A1].Offset(r) = ""
    If [E1].Offset(r) = "" Then
      naam = [A1].Offset(r).Value
      regel = (Month([B1].Offset(r)) - 1) * 9 + 6
        With Sheets(naam)
         .Cells(regel, Columns.Count).End(xlToLeft).Offset(, 1).Resize(3) = Application.Transpose(Array([B1].Offset(r), [C1].Offset(r), [D1].Offset(r)))
        End With
        [E1].Offset(r) = "ja"
    End If
  r = r + 1
  Loop
End Sub
 
Dan lukt het waarschijnlijk hiermee ook:

Code:
Sub M_snb()
   sn = Sheets("Tabel").Cells(1).CurrentRegion
   
   For j = 2 To UBound(sn)
     If sn(j, 5) = "" Then Sheets(sn(j, 1)).Cells((Month(sn(j, 2)) - 1) * 9 + 6, Columns.Count).End(xlToLeft).Offset(, 1).Resize(3) = Application.Transpose(Array(sn(j, 2), sn(j, 3), sn(j, 4)))
     sn(j, 5) = "ja"
   Next
   
   Sheets("Tabel").Cells(1).CurrentRegion = sn
End Sub
 
@VenA, ziet er heel goed uit!:thumb:

de code die ik gebruikt heb is m.i. voor mensen die (nog) niet zoveel weten van VBA eenvoudiger te lezen dan die van jou.
In mijn dagelijkse gebruik begin ik meestal met iets uitgebreiders en dat dik ik dan ook inderdaad later in tot iets compacters, maar vaak niet zo compact als wat jij hier laat zien!

En zoals je zegt: wat werkt dat werkt.

@snb, lijkt me inderdaad dat dat ook moet werken!:thumb:

Zo zie je maar: er lopen verschillende wegen naar Rome, de een wat "touristischer" en de ander via de ene of de andere "autostrada"
 
Laatst bewerkt:
Dank jullie heel hartelijk.
Het bestandje dat geupload is is een versimpeling van het eigenlijke bestand. De AGGREGAAT formules etc. (snb oplossing) die begrijp ik en kan ik nu aangepast invoeren in het originele bestand.
Ik heb geen verstand van programmeren en kan maar gedeeltelijk begrijpen wat er staat. Ik kan dus niet de code transponeren naar het originele bestand, waar meer velden en andere kolommen gebruikt worden.
Ik zie dat het werkt in het voorbeeld bestandje, maar ik ga dit niet in het originele bestand voor elkaar krijgen.

Nogmaals allen heel hartelijk dank voor jullie inspanning en kennis.
 
Jerom,

het belangrijkste is dat je geholpen bent dat je verder kunt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan