Jeg ønsker nu at indsætte en række efter kunde 1234 (idet at værdien i celle A5 er et nyt kunde-nr), i den nye celle A5 (efter indsættelse af en tom række) vil jeg lave et lookup (=VLOOKUP(A5;Deb!A$1:B$1500;2;) for at indsætte navnet for kunden fra listen i Deb. Derefter ønsker jeg at regne omsætningen fra kollonne C ("rangen" må makroen finde fra skiftet mellem de skiftende kunde-numre).
Jeg er ikke helt sikker på om dette er hvad du leder efter, men prøv det i en kopi af din fil. Funktionen benytter sig af subtotaler:
Sub SubTot()
Range("a2").Select Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Cells.Replace What:="* Total", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False For Each c In ActiveSheet.UsedRange.Cells If c.Column = 1 Then If c.Row > 1 Then c.Offset(-1, 0).Activate a = ActiveCell.Address If c = "" Then c.Formula = "=VLOOKUP(" & a & ",deb!a1:b10,2)" End If End If End If Next c ActiveWindow.DisplayOutline = False End Sub
Jeg mente også mere generelt, at Access eller en anden database, er god til sådan nogle ting som at have kunder, varer, bestillinger, totaler og nye oprettelser af disse. Og så så det også ud som om at du var ved at nå 'grænsen' af hvad der er lettest at håndtere i Excel. Og Access er ikke så farlig at komme i gang med - og så har de jo faktisk at det der firmasjov med kunder, varer og bestillinger liggende i deres eksempeldatabase Northwind. Men det hjælper selvføli' ikke noget lige nu hvor man står og har behov for det i Excel.
tobler: Det er faktisk mere simpelt end du tror. Optag en macro, og gør præcis det du ønsker. Herefter kan du rette en smule i macroen, og du har hvad du ønsker :o)
Prøv at se på denne kode om ikke det er noget i den retning du søger:
Sub Subtot() Range("a2").Select Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 4, 5), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Cells.Replace What:="* Total", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False For Each c In ActiveSheet.UsedRange.Cells If c.Column = 1 Then If c.Row > 1 Then c.Offset(-1, 0).Activate a = ActiveCell.Address If c = "" Then c.Formula = "=VLOOKUP(" & a & ",deb!a1:b10,2)" ro = ActiveCell.Row ActiveCell.Offset(1, 5).Formula = "=E" & ro + 1 & "/C" & ro + 1 & "*100" End If
End If End If
Next c ActiveWindow.DisplayOutline = False
End Sub
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.