Avatar billede ren_lyn Nybegynder
03. april 2009 - 09:14 Der er 1 kommentar og
1 løsning

Kopiering af værdier fra subtotaler

Jeg har en liste på ark1 med 6 kolonner.
A: Nr
B: Type (Type1, Type2 eller Type3)
C: Beløb
D: Hvis værdien i B=Type1 flytter jeg værdien ud i denne kolonne.
E: Hvis værdien i B=Type2 flytter jeg værdien ud i denne kolonne.
F: Hvis værdien i B=Type3 flytter jeg værdien ud i denne kolonne.
Herefter laver jeg subtotaler når Nr i A skifter under kolonne D, E & F.
På ark 2 har jeg i kolonne A de samme nr som på ark 1 og vil gerne have flyttet værdier fra subtotalerne ud for nr, og det går fint indtil jeg opdater listen på ark 1 og cellerne rykker sig igen.
Jeg har ca. 25.000 linier i min liste der bliver samlet til ca. 100 subtotaler, så det er et stort arbejde at opdatere referencerne til subtotalerne hvergang.
Avatar billede supertekst Ekspert
03. april 2009 - 11:30 #1
Via VBA skulle det være muligt at opbygge subtotalerne på ark2.

Du er velkommen til at sende en model m/såvel Ark1 & 2 - eller fuld kopi (mailadr. i profil)
Avatar billede supertekst Ekspert
03. april 2009 - 23:09 #2
Dim pNr
Dim ark1, formel, værdiF, værdiG, værdiH, værdiI, antalRækker1, antalRækker2
Dim ræk1, ræk2
Sub overførSubtotaler()
    Application.ScreenUpdating = False
   
Rem Find antal rækker på ark1
    ActiveWorkbook.Sheets("Ark1").Activate
    antalRækker1 = findAntalrækker
    Set ark1 = ActiveWorkbook.Sheets("Ark1")

Rem aktiver igen ark2
    ActiveWorkbook.Sheets("Ark2").Activate
    antalRækker2 = findAntalrækker
   
Rem Rem traverser ark2
    ræk2 = 2
   
    For ræk = ræk2 To antalRækker2
        If Cells(ræk, 1) <> "" Then
            pNr = Cells(ræk, 1)
           
            ræk1 = findPnrPåArk1(pNr)
            If ræk1 > 0 Then
                With ark1
                    værdiF = .Cells(ræk1, 6)
                    værdiG = .Cells(ræk1, 7)
                    værdiH = .Cells(ræk1, 8)
                    værdiI = .Cells(ræk1, 9)
                End With
               
                With ActiveSheet
                    .Cells(ræk, 4) = værdiF
                    .Cells(ræk, 5) = værdiG
                    .Cells(ræk, 6) = værdiH
                    .Cells(ræk, 7) = værdiI
                End With
            End If
        End If
    Next ræk
   
    Application.ScreenUpdating = False
   
    MsgBox ("Overførlsel af subtotaler afsluttet")
End Sub
Private Function findAntalrækker()
    findAntalrækker = ActiveCell.SpecialCells(xlLastCell).Row
End Function
Private Function findPnrPåArk1(pNr)
Dim subTotal
    subTotal = CStr(pNr) + " Total"                'Id af række med projektnr + teksten Subtotal
   
    With ark1.Range("B1:B" + CStr(antalRækker1))
        Set c = .Find(subTotal, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            findPnrPåArk1 = c.Row
        Else
            findPnrPåArk1 = 0
        End If
    End With
End Function
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknisk systemansvarlig / ingeniør inden for taktisk datalink

Politiets Efterretningstjeneste

CNE-specialist til PET`s indhentningsafdeling

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Netværkstekniker til Forsvarets Cyberdivision i Hvidovre – Er det dig?

Capgemini Danmark A/S

IGNITE Graduate Program 2026

Banedanmark

Systemarkitekt