11. november 2011 - 09:11Der er
4 kommentarer og 1 løsning
Dynamsik finde max-værdi
Hej
Har behov for at finde max, min, middel via VBA.
Det tricky er at der er behov for at kunne gøre dette over et antal kolonner, hvor start og slut kolonnen er dynamiske, altså defineret ved variabler. Og antallet af raækker er også variabler, men er der jo blot at lave en løkke og løbe igennem disse.
Men det er tricket emd at finde den korrekte den korrekte formel, når man ikke kan bruge range (jeg er ikke bekendt med hvorledes man nemt laver kolonnerne om til nummeriske variabler), men er nød til at bruge Cell, nogen der kan hjælpe?
Fordi det er en del af en større operation på dataene, indsættelse af kolonner afhængigt af forskellige valg der foretages.
Det er en stak testresultater som skal databehandles efter import, og det er jo oplagt at lave en makro til denne data-behandoing, når dette skal foretages regelmæssigt/dagligt.
Det her blev løsningen, den er super hurtig, er der er blot lagt faste værdier ind for kolonnestart og kolonneslut for testmuligheden.
Sub MaksMinGennemsnit() Dim j As Integer ' Antalraekker der skal bearbejdes Dim k As Integer 'rækkevariabel Dim r As Range 'Variable til område der skal beregnes på (rækken) Dim KolonneStart As Integer 'Hvilken kolonne skal gennemsnitsbregningen starte i? Dim Kolonneslut As Integer 'Hvilken kolonne skal gennemsnitsbregningen slutte i? Dim MaksValue 'Maximumværdi for valgte række Dim MinValue As Double 'Minimumsværdi for valgte række Dim Gennemsnit As Double 'Gennemsnitsværdi for valgte række
j = Range("Q1").End(xlDown).Row 'Beregner antal rækker KolonneStart = 20 Kolonneslut = 50 For k = 2 To j Step 1 Set r = Range(Cells(k, KolonneStart), Cells(k, Kolonneslut)) 'Definer hvilket område der skal arbejdes i MaksValue = WorksheetFunction.Max(r) 'Beregn maks-værdi MinValue = WorksheetFunction.Min(r) 'Beregn min-værdi Gennemsnit = WorksheetFunction.Average(r) 'Beregn gennemsnits-værdi Cells(k, Kolonneslut + 1).Value = MaksValue 'Skriv maks-værdi Cells(k, Kolonneslut + 2).Value = MinValue 'Skriv min-værdi Cells(k, Kolonneslut + 3).Value = Gennemsnit 'Skriv gennemsnits-værdi Next k 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.