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

Transponeren met voorwaarde

Status
Niet open voor verdere reacties.

gGerretje

Gebruiker
Lid geworden
12 mrt 2008
Berichten
439
Beste helpers,


In mijn bestand staan gegevens in bereik A1:H2 (cellen worden automatisch gevuld vanuit een database, maar sommige cellen kunnen leeg zijn)

Daaronder wil ik de tabel transponeren, maar ik krijg allemaal nulwaarden waar ik oorspronkelijk lege velden had.
Ik wil er dus een als-voorwaarde aan koppelen.

Kan dat met zo'n matrixformule? En zo ja waar moet ik die voorwaarde zetten?

Alvast bedankt voor jullie hulp.

Met vriendelijke groeten,
Ger
 

Bijlagen

  • Transponeren.xlsx
    8,2 KB · Weergaven: 21
Hoi AlexCEL,

Dat werkt perfect.
Was alles in het leven maar zo simpel hè.

Geweldig bedankt voor je snelle hulp.

Groeten,
Ger
 
Hoi AlexCEL,

Ik dacht dat ik meteen klaar was.
Want de cellen zien er nu inderdaad leeg uit.
Maar ik moet die gegevens kopiëren naar een ander blad.
En met de volgende code neemt hij toch gewoon de leeg lijkende regels mee.
Code:
    Range(Rows(6), Rows(6).End(xlDown)).Copy

Dan plak ik op dat andere blad onder de laatst gevulde regel dus al die "leeg lijkende regels" mee.
Bij de volgende kopieeractie wordt pas weer onder al die "zogenaamd lege" regels geplakt.

Is mijn toelichting duidelijk of wil je het gehele bestand erbij hebben?

Groeten,
Ger
 
Als je toch in VBA bezig bent dan snap ik de tussenstap via de tabel niet. Dan kun je toch gewoon de originele gebruiken en via VBA transponeren? Zijn hier wel een paar VBA cracks die kunnen helpen (ben ik niet...). Hoe representatiever je voorbeeld hoe beter je geholpen wordt met code.

Omzetten kan trouwens ook via PowerQuery.
 

Bijlagen

  • Transponeren (AC).xlsx
    16,7 KB · Weergaven: 13
Hoi AlexCEL,

Er zijn een paar redenen waarom ik dit zo gedaan heb.
De gegevens van blad 2 (op de eerste 2 rijen) gaan vanuit een database naar het Excebestand "Meausures.xlsm. Dat wordt overdag telkens overschreven (vervangen). In dat bestand kan ik dus geen formules kwijt.
(Uiteindelijk moeten de gegevens naar mijn bestand op het blad "Gegevens". Van daaruit wordt het met een ander programma uitgelezen. Meer weet ik ook niet.)

's Avonds na sluiten van de database wordt mijn bestand met Taakplanner geopend en kopieert de eerste 2 regels vanuit Measueres (dat heb ik al voor elkaar) naar de eerste twee regels van blad 2.

Die twee regels worden getransponeerd naar 2 kolommen want er moeten nog een paar gegevens achter (onder andere de datum van vandaag).
Ik kan natuurlijk niet rechtstreeks naar mijn "Gegevens"-blad kopiëren en daar de datum toevoegen, want dan genereert de formule Vandaag () morgen dus de datum van morgen.

Ik kopieer vervolgens de regels met gegevens van Blad2 naar blad "Gegevens". Kopiëren in dit geval van de waarden (ivm die datum) en de opmaak.

Dat is wat ik allemaal al voor elkaar heb geprutst ().
Het zal allemaal best nog wel effectiever kunnen, maar ja ... beperkte kennis hè. Ik ben al blij dat het tot zover werkt.

Blijft dus alleen dat probleem van die lege regels nog.

Je ziet het probleem als je twee keer achter elkaar op de knop van blad "Gegevens" klikt.

Ik hoop dat iemand er een oplossing voor heeft.

Groeten,
Ger


Jouw oplossing met die tabellen ziet er overigens wel goed uit (PowerQuery?) maar daar weet ik nóg minder van.
 

Bijlagen

  • Transponeren2.xlsm
    45,5 KB · Weergaven: 21
Laatst bewerkt:
Zo zal het wel goedgaan.

Code:
Sub j()
 With Sheets(2).Cells(4, 1).CurrentRegion
  .AutoFilter 1, "<>"
  .Offset(1).Copy Sheets("Gegevens").Cells(Rows.Count, 1).End(xlUp).Offset(1)
  .AutoFilter
 End With
End Sub
 
Zo heb je geen formules nodig en is het kopieren naar de andere sheet misschien overbodig.(staat er nu nog wel in)

Code:
Sub j2()
 With Sheets(2)
    .Cells(5, 1).Resize(8, 2) = Application.Transpose(.Range("A1:H2"))
     ar = .Cells(4, 1).CurrentRegion
   For i = 2 To UBound(ar)
    .Cells(i + 3, 3) = "2200" & Right(ar(i, 1), 4)
    .Cells(i + 3, 4) = Mid(ar(i, 1), 2, WorksheetFunction.Min(9, Len(ar(i, 1)) - 5))
    .Cells(i + 3, 5) = Date
   Next
    With .Cells(4, 1).CurrentRegion
      .AutoFilter 1, "<>"
      .Offset(1).Copy Sheets("Gegevens").Cells(Rows.Count, 1).End(xlUp).Offset(1)
      .AutoFilter
    End With
  End With
End Sub
 
Laatst bewerkt:
Hallo JVeer,

Je eerst code werkt goed.
De tweede ga ik nog even uitproberen maar in principe ben ik met die eerste al geholpen.

Mooie oplossing ofschoon ik liever gezien had waarom in mijn oorspronkelijke versie die lege cellen mee gekopieerd werden.
Daar ben ik helaas niet achter.
Misschien dat iemand daar nog een suggestie voor heeft.

In ieder geval bedankt voor je werkende code.

Groeten,
Ger
 
Hallo JVeer,

Ik ben er vanavond nog even serieus mee aan de slag gegaan.
Eerst geprobeerd de code te begrijpen en met wat vallen en opstaan is dat gelukt.
Ik vind dat ook prettiger dan wanneer er zomaar een prachtige maar onbegrijpelijke code uit de lucht komt vallen

Met een paar kleine aanpassingen is het minder dan de helft van mijn oorspronkelijke code en het werkt perfect.

Heel erg bedankt voor de moeite die je gedaan hebt om het uit te zoeken.

Groeten,
Ger
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan