Avatar billede hoell Nybegynder
11. november 2011 - 09:11 Der 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?
Avatar billede hoell Nybegynder
11. november 2011 - 09:18 #1
orv glemte lige at maks, min, middel er pr række
Avatar billede acore Ekspert
11. november 2011 - 10:55 #2
Hvorfor vil du gøre det i VBA? Der er gode muligheder for at gøre det direkte i en formel.

Hvis du har et range som tekst i A1, så kan du finde max med:

=MAX(INDIRECT(A1))
Avatar billede hoell Nybegynder
11. november 2011 - 11:49 #3
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.
Avatar billede finb Ekspert
11. november 2011 - 13:17 #4
Redefinér hele tiden
øverst i din makro
dit range AlleTallene med:

Set AlleTallene = range("a1").currentRegion
Avatar billede hoell Nybegynder
11. november 2011 - 13:58 #5
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
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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