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

Hoe kopieer ik een tabel en laat de lege cellen weg?

Status
Niet open voor verdere reacties.
Wellicht ga ik nu een klein beetje ver, maar zou het misschien mogelijk zijn om een veld met ~ erin, leeg te maken?

Ik vraag dit omdat het script nu alleen de cellen kopieert die gevuld zijn (precies zoals ik vroeg), maar de categorie waar die cel bij hoort wordt niet getoond.
Als voorbeeld:
Als ik dit invul:

Catering
Borrelbuffet1X
Borrelbuffet2
Borrelbuffet3X
Borrelbuffet4
Dan is het resultaat:
Borrelbuffet1 X
Borrelbuffet3 X

Maar het zou ook wel tof zijn als de categorienaam (in dit geval: Catering) getoond wordt.
Met een formule zoals =ALS(NIET(AANTALARG(D21:D26));"";"~") kan ik er simpel voor zorgen dat er een ~ achter "Catering" komt te staan zodra een veld eronder is ingevuld. Maar dan krijg ik dit als resultaat:
Catering ~
Borrelbuffet1 X
Borrelbuffet3 X

Die ~ achter "Catering" staat een beetje raar. Is het mogelijk om ervoor te zorgen dat een cel met een bepaald (ongebruikelijk) teken niet getoond wordt? Stel dat je dan een ~ achter de naam van een categorie zet, dan toont het wel de naam van de categorie, maar het toont dan niet de ~ die erachter staat.

Of vraag ik nu iets dat heel erg moeilijk is?
 
Zet maar ergens een tilde in kolom D.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sn, a_sp, c00 As String
If Not Intersect(Target, Columns("a:e")) Is Nothing Then
 Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row).Name = "Bereik"
sn = Range("bereik").Resize(, 5)
   c00 = Join(Filter([transpose(if(offset(bereik,,3)<>"",row(bereik),"~"))], "~", False), "|") & "|"
     a_sp = Application.Index(sn, Application.Transpose(Split(c00, "|")), Array(1, 2, 3, 4, 5))
    
       With Sheets("Offerte")
         .Cells(63, 1).CurrentRegion.ClearContents
         .Cells(63, 1).Resize(UBound(a_sp, 1) - 1, UBound(a_sp, 2)) = a_sp
         .Columns(4).Replace "~~", ""
       End With
    Application.Names("bereik").Delete
End If
End Sub
 
Give that man a coockie :D.

Bedankt Harry. Het werkt nu uitstekend. Ik begrijp dat er met meer kennis nog veel meer mogelijk is, vooral met opmaak en dergelijke er bij, maar voor ons is dit al een enorme stap vooruit (nu wordt alles met de hand in Word uitgetypt en berekend :p ).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan