03. april 2009 - 09:14Der 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.
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
Synes godt om
Ny brugerNybegynder
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.