Avatar billede madiedk Nybegynder
22. november 2007 - 12:24 Der er 10 kommentarer og
1 løsning

kan excel løse det eller skal der VBA til?

jeg har nogle idnr i kolonne A og nogle tal i kolonne b
i kolonne c skal der står de idnr der står i kolonne a det dobbelt antal gange der står i kolonne b f.eks.

A      B    C
5001  3    5001
5002  2    5001
5003  4    5001
            5002
            5002
            5003
            5003
            5003
            5003

hvordan løser det det? skal der bruges vba? hvis ja hvordan skal koden se ud?
på forhånd mange tak
Avatar billede supertekst Ekspert
22. november 2007 - 13:14 #1
VBA - vender tilbage...
Avatar billede supertekst Ekspert
22. november 2007 - 13:23 #2
Koden anbringes i ARK med data:

Dim rækC
Public Sub start()
Dim ræk
    rækC = 1                        'Forudsætning p.t
   
    For ræk = 1 To 65000
        If Cells(ræk, 1) <> "" Then
            idnr = Cells(ræk, 1)
            antal = Cells(ræk, 2)
            opbygIdKolonne idnr, antal
        Else
            MsgBox ("Gennemløb afsluttet")
            Exit Sub
        End If
    Next ræk
End Sub
Private Sub opbygIdKolonne(id, antal)
    If antal > 0 Then
        For tæller = 1 To antal
            Cells(rækC, 3) = id
            rækC = rækC + 1
        Next tæller
    End If
End Sub
Avatar billede madiedk Nybegynder
22. november 2007 - 14:33 #3
fik lavet min egen kode og det virkede også, men det gør din også, så der er selvfølgelig point, men kan du svarer mig på hvorfor at det går så langsomt, der kommer ca kun et idnr i sekundet det er for langsomt hvis der nu er 300 idnr. det går lige langsomt om jeg bruger din eller min kode. hvad kan det skyldes.
Avatar billede supertekst Ekspert
22. november 2007 - 14:44 #4
Prøv at sende dit ark til: pb@supertekst-it.dk
Avatar billede excelent Ekspert
22. november 2007 - 14:45 #5
prøv:
Sub test()

rk1 = Cells(1000, 1).End(xlUp).Row
For t = 1 To rk1
For j = 1 To Cells(t, 2).Value
rk2 = Cells(1000, 3).End(xlUp).Row + 1
Cells(rk2, 3) = Cells(t, 1)
Next
Next
Cells(1, 3).Delete shift:=xlUp

End Sub
Avatar billede madiedk Nybegynder
22. november 2007 - 14:51 #6
tak for tilbuddet med at sende det, men det er noget arbejdsrelateret så det går ikke, jeg prøver lige koden fra excelent....
Avatar billede supertekst Ekspert
22. november 2007 - 14:56 #7
OK
Avatar billede excelent Ekspert
22. november 2007 - 14:57 #8
tror nu ikke det hjælper, supertekst kode er lige så hurtig her
Avatar billede madiedk Nybegynder
22. november 2007 - 14:58 #9
okay, så kan det være min computer, eller måske er excelarket for omfattende, jeg prøver det på en anden computer på mandag, men tak for hjælpen begge 2
Avatar billede word-hajen Nybegynder
22. november 2007 - 19:49 #10
Hvad med at slå beregning fra, mens koden kører og så til igen, når koden er afviklet?

Application.Calculation = xlManual
Application.Calculation = xlCalculationAutomatic
Avatar billede supertekst Ekspert
22. november 2007 - 23:03 #11
og evt. også

Application.ScreenUpdating = false
-
-
-
Application.ScreenUpdating = true
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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