Avatar billede smoothj Nybegynder
23. november 2000 - 14:37 Der er 5 kommentarer og
1 løsning

Blanke celler ....

Kære Alle

Mit problem er, at jeg har en struktur, der ser således ud:

a 1
  2
  3
b 1
  2
  3
c 1
  2
  3

- og jeg ønsker at få pladserne under bogstaverne fyldt ud med bogstavet ovenover:

a 1
a 2
a 3
b 1
b 2
b 3
c 1
c 2
c 3

så jeg kan lave en pivottabel i Excel. Der er 216000 linier så jeg kan ikke lige hente det direkte i Excel.

Er der nogen, der har en god ide.

På forhånd tak

:o]
Avatar billede lkp Nybegynder
23. november 2000 - 15:01 #1
Hej Smoothj

Nedenstående kode, løber tabellen igennem, og fylder tomme celler ud med værdien af cellen ovenover.

Hvis tabellen starter med en tom celle, vil de efterfølgende celler blive udfyldt med denne værdi; altså ingenting.

--- Kode start ---

Public Sub FillEmptyCells()

    Dim rst As ADODB.Recordset
    Dim strBuffer As Variant
   
    Set rst = New ADODB.Recordset
   
    rst.Open \"tblMain\", CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic
   
    strBuffer = rst(0)
    rst.MoveNext
    Do While Not rst.EOF
        If VarType(rst(0)) = vbNull Then
            rst(0) = strBuffer
            rst.Update
        Else
            strBuffer = rst(0)
        End If
        rst.MoveNext
    Loop
   
End Sub

--- Kode slut ---

Jeg går i koden ud fra, at cellen der skal udfyldes i er den første i tabellen (rst(0)). hvis ikke, skal du ændre de nul-baserede indeks til den rigtige værdi.

Desuden skal du selvfølgelig ændre navnet på tabellen til det navn du har (tblMain -> <ditTabelNavn).

Jeg går ud fra, at du benytter Access 2K og har sat en reference til ADO (er gjort som standard), hvis ikke kan du lige skrive, så an jeg lave det om til DAO (Access 97).

Med venlig hilsen

LKP
Avatar billede smoothj Nybegynder
23. november 2000 - 16:04 #2
Kære lkp

Jeg har 97 så hvis du kan ændre det vil jeg blive glad  så prøver jeg det i morgen

1000 tak

:o]
Avatar billede lkp Nybegynder
23. november 2000 - 23:52 #3
Hej Smoothj

Hermed kode der virker i 97

--- Kode start ---

Public Sub FillEmptyCells()

    Dim rst As Recordset
    Dim strBuffer As Variant
   
    Set rst = CurrentDb.OpenRecordset(\"tblMain\", dbOpenDynaset)
       
    strBuffer = rst(0)
    rst.MoveNext
    Do While Not rst.EOF
        If VarType(rst(0)) = vbNull Then
            rst.Edit
            rst(0) = strBuffer
            rst.Update
        Else
            strBuffer = rst(0)
        End If
        rst.MoveNext
    Loop
   
End Sub

--- Kode slut ---

Håber du kan bruge det.

Med venlig hilsen

LKP
Avatar billede smoothj Nybegynder
24. november 2000 - 08:36 #4
Hhhhmmmm ......

Hvor fortæller man hvilken kolonne den skal kigge i ?

Jeg beklager men jeg ved kun ganske ganske lidt om Access og især VBA i Access.

.o]
:o]
Avatar billede lkp Nybegynder
24. november 2000 - 14:47 #5
Hej Smoothj

Den kolonne der skal kigges i bestemmes af \"rst(0)\". Hvis det er den første kolonne i din tabel er det rst(0), den anden rst(1), den tredie rst(2) osv.

Du kan dog også vælge at skrive kolonne navnet istedet. Hvis det feks er kolonnen med navnet \"bogstav\" du ønsker, at fylde ud, skal du skrive rst(\"bogstav\") alle de steder hvor der nu står rst(0).

Håber, at du kan bruge ovenstående, ellers skriv igen.

Med venlig hilsen

LKP
Avatar billede fogh Nybegynder
21. august 2010 - 02:28 #6
Hej LKP, super svar - har tit manglet den stump kode når jeg arbejder med at "rense" data! Tak for det!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester