Avatar billede tzinck Novice
27. januar 2005 - 09:06 Der er 5 kommentarer og
1 løsning

Samle info i een række

Jeg har et regneark, hvor det samme varenummer findes mange gange (kolonne B), blot med forskellige andre tilhørende numre (kolonne D)
Jeg vil gerne have at:
- hvert varenummer kun findes een gang,
- en kolonne, der viser hvor mange gange et varemummer findes
- de andre tilhørende numre på række i stedet for nedad i en kolonne.

Hvordan griber jeg den sag an ?
Avatar billede lorentsnv Nybegynder
27. januar 2005 - 17:50 #1
Jeg tror du bliver nødt til at skrive noget VBA-kode der looper igennem din tabel, og eventuelt legger resultatet i et nyt sheet.

En måde at gøre det på, er at sortere din nuværende tabel efter kolonne B, og få VBA-koden til at løbe igennem listen, og skrive resultatet til dit nye sheet.

Jeg har lavet lidt kode som kan gøre dette:
Sub TransformData()
   
'Forudsætninger:
'Kildedata findes i en range med navne 'Source', kolonne B har varnummer og kolonne D værdien
'Ark med kildedata heder 'Sheet1'
'Ark som der skal skrives til heder 'Sheet2'

    Dim colB As Integer                'Tildeles værdien af kolonne B
    Dim rowDest As Integer              'Holder styr på hvilke række der skrives til
    Dim sheetDest As Excel.Worksheet    '

    Dim rng As Excel.Range
    Set rng = Range("Source")
   
'    Range("A2:D10").Select
'    ActiveWorkbook.Names.Add Name:="Source", RefersToR1C1:="=Sheet1!R2C1:R10C4"

    Excel.Worksheets("Sheet1").Select
    rng.Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
           
    colB = rng(1, 2)
    rowDest = 1
   
    'Går over til arket "Dest"
    Set sheetDest = Excel.Worksheets("Sheet2")
    sheetDest.Activate
   
    'Overskrifter
    Range("A1").Select
    Selection.Font.Bold = True
    ActiveCell.FormulaR1C1 = "Varenummer"
    Range("B1").Select
    Selection.Font.Bold = True
    ActiveCell.FormulaR1C1 = "Antal forek."
   
    'Starter i A2
    Range("A2").Select
    ActiveCell.FormulaR1C1 = colB
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = rng(1, 4)
   
    For x = 2 To rng.Rows.Count
        If rng(x, 2) <> colB Then
            colB = rng(x, 2)
            If colB = 0 Or IsNull(colB) Then Exit For
            rowDest = rowDest + 1
            Range("A" & CStr(rowDest + 1)).Select
            ActiveCell.FormulaR1C1 = colB
            ActiveCell.Offset(0, 1).Select
            ActiveCell.FormulaR1C1 = rng(x, 4)
        Else
            ActiveCell.Offset(0, 1).Select
            ActiveCell.FormulaR1C1 = rng(x, 4)
        End If
    Next x
   
End Sub
Avatar billede tzinck Novice
25. februar 2005 - 08:40 #2
meget avanceret - tak for hjælpen.  Kom med et svar
Avatar billede tzinck Novice
05. april 2005 - 16:12 #3
kom med et svar hvis du vil have point :-)
Avatar billede lorentsnv Nybegynder
05. april 2005 - 16:34 #4
svar (beklager lang svartid) :-)
Avatar billede tzinck Novice
16. maj 2005 - 16:57 #5
Det var kun en komentar - kom med et rigtigt svar og få point :-)
Avatar billede lorentsnv Nybegynder
17. maj 2005 - 16:30 #6
vi prøver igen :-)
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