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

Velden uit een Excel databestand splitsen in kolommen en dan in rijen

  • Onderwerp starter Onderwerp starter MrMB
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

MrMB

Nieuwe gebruiker
Lid geworden
12 dec 2018
Berichten
3
Dag allen,

Ik ben redelijk goed met Excel, maar nu heb ik toch iets waar ik erg veel moeite mee heb.
Ik heb mijn data, maar dan met dummy data, in een Excel document gezet. Per stap.


Het doel
Het gaat om een rapportage maken van onze kamers, in een hotel.
De export van ons systeem is volledig, maar lastig uit te splitsen naar data die ik daadwerkelijk wil hebben.

Wat ik wil weten?
In de basis, wil ik weten welke kamers op welke dagen bezet waren/zijn. Maar daarnaast wil ik zoveel mogelijk informatie bewaren.


Stap 1
De export (dummy data) uit mijn reserveringssysteem:
Het probleem is:
1. Alle kamernamen in 1 kolom samen staan, gescheiden door een komma
2. Alleen de check-in datum en aantal nachten opgeslagen staan. Niet de dagen dat de kamer bezet is.

Stap 2
Het is mij gelukt om:
1. De kamernamen te scheiden (Excel functie Gegevens>Tekst naar Kolom)
2. De bezette dagen uit te splitsen (met behulp van een gelijk/groter dan functie per dag, en check-in dag +1 te doen.
>> Als je de functie wilt bekijken, moet je het formule veld 3 hoog maken. Zo probeer ik de formule overzichtelijker te maken.

Stap 3
Hetgeen wat niet lukt (en ik in het voorbeeld handmatig heb gemaakt):
Ik wil per datum EN per kamer 1 rij, met alle daarbij behorende informatie.

Hieruit kan ik vervolgens verschillende draaitabellen maken met de informatie die ik wil hebben. Zo heb ik een uitgebreide dataset waar ik alles uit kan halen wat ik wil.
Als ik stap 2 beter over kan slaan en het op een andere manier kan doen, dan mag dat ook. Graag! Of elke andere mogelijke manier waarop ik mijn eerder gedefinieerde doel kan bereiken.


Alle hulp word erg gewaardeerd.
Alvast bedankt (al is het alleen maar voor het nemen van de tijd om alles te lezen)

Groet,
MrMB
 

Bijlagen

Oncompleet en moeilijk te begrijpen

Beste,

Bedankt voor de reactie!

Ik begrijp alleen niet zo goed wat u bedoeld..
Ook, zijn niet alle dagen uitgesplitst. Slechts de kamers. Dus het antwoord is niet helemaal compleet ben ik bang.

Hoop op verdere toelichting,

Bedankt.
 
Zo:

Code:
Sub M_snb()
  sn = Sheet1.Cells(1).CurrentRegion
    
  ReDim sp(2000, 7)
    
  For j = 2 To UBound(sn)
    st = Split(sn(j, 8), ",")

    For jj = 0 To UBound(st)
      For jjj = 1 To sn(j, 4)
        For jjjj = 0 To 6
          sp(y, jjjj) = sn(j, jjjj + 1)
          If jjjj = 2 Then sp(y, jjjj) = sp(y, jjjj) + jjj - 1
        Next
        sp(y,jjjj)=st(jj)
        y = y + 1
      Next
    Next
  Next

  Sheet3.Cells(2, 12).Resize(UBound(sp), 8) = sp
End Sub
 
Laatst bewerkt:
Zoals gebruikelijk weer interessante code van SNB.
Ben ik aan het uitpluizen, en mijn probleem zit in

Code:
st = Split(sn(j, 8), ",")
If jjjj = 7 Then sp(y, jjjj) = "Welke kamer"

Hoe krijg ik in sp(y, jjjj) kamer A resp. kamer T resp. kamer X ???
Lukt mij niet om dit te ontrafelen via Msgbox.

Code:
Sub M_snb()
  sn = Tabelle1.Cells(1).CurrentRegion
    
  ReDim sp(2000, 7)
  For j = 2 To UBound(sn)                                                       'Rij 2 t/m 5
    st = Split(sn(j, 8), ",")                                                   'Kolom 8 splitsen
    For jj = 0 To UBound(st)                                                    'Aantal kamers
      For jjj = 1 To sn(j, 4)                                                   'Aantal nachten
        For jjjj = 0 To 7                                                       '8x loopen SNB had hier 6 staan
          sp(y, jjjj) = sn(j, jjjj + 1)                                         'j = rij, jjjj = kolom
          If jjjj = 2 Then sp(y, jjjj) = sp(y, jjjj) + jjj - 1                  'Indien derde kolom (dag) dan 1-12-2018 + 1 nacht minus 1
          If jjjj = 7 Then sp(y, jjjj) = "Welke kamer"
        Next
        y = y + 1
      Next
    Next
  Next

  Tabelle3.Cells(2, 12).Resize(UBound(sp), 8) = sp
End Sub

Thanx/Excelbat
 
Hoe bedoel je niet alle dagen zijn uitgesplitst? O, ik zie het al, je wilt een regel per nacht. Geen tijd om dat te maken helaas.
 
Laatst bewerkt:
@ExcelBat

Er was 1 regel code weggevallen; die heb ik alsnog toegevoegd.
 
Ik heb 'm al:

Code:
If jjjj = 7 Then sp(y, jjjj) = st(jj)

Thanx anyway/Excelbat
 
@SNB #7:

U was me voor. Had bericht nog niet gezien.
Ik was ondertussen verder gaan puzzelen en ben zelf tot een oplossing gekomen.

Thanx/Excelbat
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan