Avatar billede patterman Nybegynder
28. oktober 2009 - 06:44 Der er 10 kommentarer og
1 løsning

subtotal efter filtrering

jeg har lidt problemer med at se hvordan man skal kunne lave en total efter en filtrering i VBA. subtotal gør normalvis arbejdet fint, men kan ikke gennemskue hvordan det skal kodes.

jeg kan ikke have subtotal i et fast felt da der løbende vil blive tilføjet data i det ark hvor der skal summeres fra.
Avatar billede excelent Ekspert
28. oktober 2009 - 17:12 #1
Vis mig lige din kode
Avatar billede patterman Nybegynder
29. oktober 2009 - 02:22 #2
Sub SQparts()

Sheets("SQ").Activate
Dim Dest, ns, Month As Integer
Dest = 5
ns = 0
Month = 1

Dim SupplierName, Year, PeriodB, PeriodE, First, Second, PU, PL As Variant
Set SupplierName = Sheets("SQ").Cells(3, 2)
Set Year = Sheets("SQ").Range("F8")
First = ">="
Second = "<="
PeriodB = "-01-" & Year
PeriodE = "-31-" & Year
PL = "-30-" & Year
PF = "-28-" & Year


'Janaur
Sheets("Total").Range("A1").AutoFilter _
Field:=4, _
Criteria1:=SupplierName

With Sheets("Total").Range("A1")
.AutoFilter , Field:=1, Criteria1:=First & Month & PeriodB, Criteria2:=Second & Month & PeriodE, Operator:=xlAnd
End With
   
Sheets("SQ").Cells(Dest, 2) = Sheets("Total").Range("H4").End(xlDown).Value**
Sheets("SQ").Cells(Dest, 3) = Sheets("Total").Range("M4").End(xlDown).Value**
Sheets("Total").Range("A1").AutoFilter Field:=4
Sheets("Total").Range("A1").AutoFilter Field:=1


**lige pt har jeg bare sat min destination til at pege på en celle hvor jeg har lavet en fast subtotal, men det går ikke når der kommer mere data til. jeg ville jo ønsker at i stedet for at tage .value kan få den til at hente subtotal i stedet?
Avatar billede excelent Ekspert
29. oktober 2009 - 15:10 #3
Taster du nye data ind manuelt, i hvilke kolonner ?
I hvilke kolonner skal der være subtotal ?
går ud fra det er i ark Total !!!
Avatar billede patterman Nybegynder
29. oktober 2009 - 16:04 #4
ja hov det kan du selvfølgelig ikke se. Jeg indtaster manuelt ind i kolonnerne "H" og "M" på ark "total", og det er i disse kolonner jeg har brug for subtotal. I koden starter jeg først i H4 og M4 da jeg har nogle overskrifter der selvfølgelig ikke skal tælles med.
Avatar billede excelent Ekspert
29. oktober 2009 - 16:47 #5
ok her er mit forslag :

Indsæt manuelt SUBTOTAL-formlerne 1 linie under sidste række med tal, så der er en tom linie imellem dine data og totalen.
Formlen skal dække fra række 4 til sidste række med tal.

Højreklik på ark Total og vælg Vis programkode
Indsæt følgende kode der.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 8 Then Exit Sub
Application.EnableEvents = False
If Left(Target.Offset(1, 0).Formula, 4) = "=SUB" Then
Target.Offset(1, 0).EntireRow.Insert
Target.Offset(0, 1).Select
End If
Application.EnableEvents = True
End Sub

koden tester for input i den tomme celle i kolonne H
Hvis du indtaster noget, indsættes automatisk en ny linie.

Du anvender blot din kode til autofilter som du plejer
skulle der opstå problemer, så sig til.
Gem evt. som en kopi til det kører som planlagt.
Avatar billede excelent Ekspert
29. oktober 2009 - 17:48 #6
Du opnår iøvrigt samme effekt hvis du opretter en Liste
I denne anvendes også Autofilter, som din kode formentlig også virker på
Avatar billede patterman Nybegynder
30. oktober 2009 - 06:51 #7
koden virker fint, dog kan jeg desværre ikke bruge den direkte i forbindelse med min kode som den er lige pt. jeg bruger xldown til at lokalisere subtotal'en men den går jo kun til sidste celle med værdi, og da der er en tom celle imellem sidste række og subtotal'en så vælger xldown den forkerte celle.
Avatar billede excelent Ekspert
30. oktober 2009 - 09:51 #8
Så kan du tilføje offset som her :

Sheets("SQ").Cells(Dest, 2) = Sheets("Total").Range("H4").End(xlDown).offset(1,0).Value

Men istedet for koden kunne du prøve med Liste, som tillige gir nogle flere muligheder (der får du iøvrigt også en tom imellem)

Fjern først Autofilter
I menuen Data vælger du Opret liste
Marker dit område med data, hvor øverste linie er den linie hvor du før havde dine dropdown-pile
Sæt flueben i "Listen indeholder overskrifter" og klik ok

Klik et sted i Listen og vælg Data/Liste/Rækken Total
som opretter en linie nederst hvor du kan vælge mellem SUM Middel osv..
Avatar billede excelent Ekspert
30. oktober 2009 - 10:24 #9
Hvis du bslutter dig for at anvende Liste, så finder du nederste række med :

Sheets("SQ").Cells(Dest, 2) = Sheets("Total").Range("H65536").End(xlup).Value

forudsat der ikke er data under din liste
Avatar billede patterman Nybegynder
09. november 2009 - 02:28 #10
Mange tak for hjælpen har fået det til at virke. Liste er blevet til table i excel 2007 men derudover så ændre det på min opsætning og det går ikke, desværre. Så det blev ikke liste metoden.

Hvis du gider sende et svar så skal jeg med glæde give dig dine point.
Avatar billede excelent Ekspert
09. november 2009 - 19:01 #11
ok
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
Kurser inden for grundlæggende programmering

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