PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBASmart procentuell uträkningSmart procentuell uträkning
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2022-11-24 13:40
 
 Ändrad av vescape  på 2022-11-24 13:42:11

 Hej,

Jag söker ett sätt på att få en procentsats uträknad.

Procentsats ska räknas ut genom att kolla produkt efter produkt (kolumn A)  och procenten läggs i kolumn D.

Dock ska den ta hänsyn (plussa på?) till procenten som den redan lagt in i cellen ovanför, och när en ny produkt i kolumn A kommer börjar den alltså om.

Jag har lagt in en tabell nedan där procentsatserna är korrekt inskrivna, det är alltså detta jag vill att makrot ska åstadkomma via en array eller annan lämplig lösning.

 A             B                C                          D

Produkt Antal i låda Totalt antal i lådor Procent
1 100 300 33,33%
1 100 300 66,67%
1 100 300 100,00%
2 25 75 33,33%
2 25 75 66,67%
2 25 75 100,00%
3 45 145 31,03%
3 45 145 62,07%
3 45 145 93,10%
3 10 145 100,00%
4 20 110 18,18%
4 50 110 63,64%
4 40 110 100,00%

 

Mvh vescape

Nytt inlägg
 2022-11-24 16:53
 

Den här formeln (i d2) gör det du vill (kopiera ner så långt det behövs):

=OM(A2<>A1;B2/C2;D1+B2/C2)

Du borde kunna gör ett makro utifrån samma logik. Dvs varje gång värdet i A-kolumnen byts räknar den ut radens procent. Annars adderas föregående rad.

Exemel där du återanvänder formeln

Sub Makro1()

    Dim rOmr As Range

    Set rOmr = Range("C2", Range("C2").End(xlDown)).Offset(0, 1)

    rOmr.FormulaR1C1 = "=IF(RC[-3]<>R[-1]C[-3],RC[-2]/RC[-1],RC[-2]/RC[-1]+R[-1]C)"

    rOmr.Value = rOmr.Value

End Sub

 

Eller så här om du, av någon outgrundlig anledning, inte vill använda excels arbetsbladsfunktioner

Sub Makro2()

Dim rOmr As Range

Set rOmr = Range("D2")

Do

    rOmr.Value = rOmr.Offset(0, -2).Value / rOmr.Offset(0, -1).Value

    If rOmr.Offset(0, -3).Value = rOmr.Offset(-1, -3).Value Then

        rOmr.Value = rOmr.Value + rOmr.Offset(-1, 0).Value

    End If

    Set rOmr = rOmr.Offset(1, 0)

Loop Until rOmr.Offset(0, -3).Value = ""

End Sub

 

Nytt inlägg
 2022-11-30 21:28
 

 Tack, riktigt snyggt!

Har bara testat formeln och den fungerar, jag ska testa makron senare!

Återigen tack :)

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBASmart procentuell uträkningSmart procentuell uträkning

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter