Opgelost Onmogelijk lijst met gegevens omzetten naar tabel voor import in mysql-db

Dit topic is als opgelost gemarkeerd

RoVo1211

Gebruiker
Lid geworden
24 feb 2024
Berichten
114
Besturingssysteem
Windows 11
Office versie
Office 365
Na een half jaartje er niet naar te hebben omgekeken, ben ik weer begonnen om de wedstrijdkalender van de Nationale Trio League (bowling) proberen om te zetten van tabelweergave naar een database waar men filters kan instellen.

Hierbij een voorbeeld van het bijgevoegde bestand:
1728678702245.png

Destijds (april dit jaar) is er een macro geschreven die een heleboel problemen oploste, maar als ik die execute wordt het hele gedeelte tussen for r1=... next r1 overgeslagen. Wat gaat hier fout. Ook de tekst van de macro zet ik in dit bericht:
Code:
Sub Splitsen()
'r1 rijnummer op Blad1
'r2 rijnummer op Blad2
'a  array met alle elementen van de oneven rij, gesplitst op spatie, a(0) is het eerste element
'b  array met alle elementen van de even rij, idem
    With Sheets(1)
        For r1 = 1 To Sheets(1).[A1].CurrentRegion.Rows.Count - 1 Step 2                            'For loop die in stapjes van twee de rijen van Blad1 verwerkt.
            For r2 = (r1 - 1) \ 2 + 1 To r1 + 1                                                     'rij op werkblad 2 bepalen
                a = Split(Cells(r1, 1), " ")                                                        'splitst rij 1 op spatie
                b = Split(Cells(r1 + 1, 1), " ")                                                    'splitst rij 2 op spatie
                Debug.Print Time() & vbNewLine & _
                    "a(0): " & a(0).Value & vbNewLine & _
                    "a(1): " & a(1).Value
                .Cells(r2, 1) = a(0)                                                                'eerste element van a komt in rij r2, kolom A van Blad2
                .Cells(r2, 2) = a(1)                                                                'tweede element van a
                            
    'AH hieronder geef je i een waarde
                If a(2) = "Eredivisie" Then                                                         'als poule = Eredisie
                    If a(8) = "BV" Then                                                             'als a(8) = BV, teamnaam bestaat uit 5 elementen
                        .Cells(r1, 3) = a(3) & " " & a(4) & " " & a(5) & " " & a(6) & " " & a(7)    '3e-7e element van a komt in kolom C, gescheiden door spaties
                        i = 8
                    ElseIf a(7) = "BV" Then                                                         'als a(7) = BV, teamnaam bestaat uit 4 elementen
                        .Cells(r1, 3) = a(3) & " " & a(4) & " " & a(5) & " " & a(6)                 '3e-6e element van a komt in kolom C, gescheiden door spaties
                        i = 7
                    ElseIf a(6) = "BV" Then                                                         'als a(6) = BV, teamnaam bestaat uit 3 elementen
                        .Cells(r1, 3) = a(3) & " " & a(4) & " " & a(5)                              '3e-5e element van a komt in kolom C, gescheiden door spaties
                        i = 6
                    ElseIf a(5) = "BV" Then                                                         'als a(5) = BV, teamnaam bestaat uit 2 elementen
                        .Cells(r1, 3) = a(3) & " " & a(4)                                           '3e-4e element van a komt in kolom C, gescheiden door spaties
                        i = 5
                    ElseIf a(4) = "BV" Then                                                         'als a(4) = BV, teamnaam bestaat uit 2 elementen
                        .Cells(r1, 3) = a(3)                                                        '3e element van a komt in kolom C
                        i = 4
                    End If
                Else
                    .Cells(r1, 3) = a(2) & " " & a(3) & " " & a(4)                                  'x & "e" divisie y
    'AH die je hier wilt gebruiken, maar hier komt hij nooit als je al hierboven bent geweest.
    'AH Als i hier al een waarde zou hebben is die van een vorige verwerkte rij
                    Select Case a(i) = "BV"
                        Case i = 9
                            .Cells(r1, 4) = a(5) & " " & a(6) & " " & a(7)                          '5e-7e element in kolom D
                            .Cells(r1, 5) = a(UBound(a))                                            'BV-nr in kolom E
                        Case i = 8
                            .Cells(r1, 4) = a(5) & " " & a(6)                                       '5e-6e element in kolom D
                            .Cells(r1, 5) = a(UBound(a))                                            'BV-nr in kolom E
                        Case i = 7
                            .Cells(r1, 4) = a(5) & " " & a(6)                                       '5e-6e element in kolom D
                            .Cells(r1, 5) = a(UBound(a))                                            'BV-nr in kolom E
                    End Select
                End If
                
                Select Case UBound(b)
                    Case b = 1                                                         'Kampioen Eredivisie
                        .Cells(r2, 7) = b(0)
                        .Cells(r2, 8) = b(1)
                    Case b = 2                                                         'x"e" & plaats Eredivisie
                        .Cells(r2, 7) = b(0) & " " & b(1)
                        .Cells(r2, 8) = b(2)
                    Case b = 3                                                         'Kampioen y"e" & divisie z
                        .Cells(r2, 7) = b(0)
                        .Cells(r2, 8) = b(1) & " " & b(2) & " " & b(3)
                    Case b = 4                                                         'x"e" & plaats y"e" & divisie z
                        .Cells(r2, 7) = b(0) & " " & b(1)
                        .Cells(r2, 8) = b(2) & " " & b(3) & " " & (b4)
                End Select
            Next r2
        Next r1
        .Columns("A:H").EntireColumn.AutoFit                               'pas de kolommen aan aan de langste tekst
        .Select
    End With

Wat gaat hier fout?

End Sub
[/code]
 

Bijlagen

Een deel van het probleem heb ik al opgelost:
Code:
        For r1 = 1 To Sheets(1).[A2].CurrentRegion.Rows.Count - 1 Step 2
[A1] heb ik veranderd in [A2], nu worden de opdrachten tussen for r1 ... next r1 wel uitgevoerd;
maar nu blijft-ie hangen op
Code:
.Cells(r2, 2)=a(1)
.
Cells(r2, 2) verwijst naar [B2] en daar staat in de cel zelf niets, want de tekst begint in kolom A.
Hoe bereik de 2e regels van ieder team met de resultaten van vorig seizoen?

In het venster Direct heb ik geprobeerd de waarden uit de array op te vragen met
Code:
?a(1)
en ik kreeg de foutmelding "Het subscript valt buiten het bereik".
Hoe kan ik de inhoud van een array opvragen?
 
Laatst bewerkt:
Er zijn meerdere oplossingen gegeven in april.
Je data ziet er nu anders uit dan voorheen.
 
Ik heb het over een hele andere boeg gegooid. Ik heb de PDF geïmporteerd in Word, daar een fatsoenlijke tabel van gemaakt en dit copy-paste in Excel.
Nu heb ik ingewikkelde formules en functies helemaal niet nodig. Leuk om te weten dat het kan, maar nu te complex.
 
Je kunt een PDF ook rechtstreeks in Excel importeren vie Gegevens, Gegevens ophalen, uit bestand, uit PDF.
 
dank, hier had ik nog niet aan gedacht.
 
Terug
Bovenaan Onderaan