Avatar billede Lars Mester
06. august 2018 - 10:36 Der er 1 kommentar og
1 løsning

Sæt værdier

Hej

Har en kolonne A B C hvor jeg gerne vil beregne og sætte værdien i kolonne D og E
Navn    Beløb    Antal      Formel1_værdi    Formel2_værdi
A        100000    1000              100            1
B        120000    1400      85,71428571    1,166666667
C        130000    1700    76,47058824    1,307692308
D        100000    1000              100            1

Formel 1: =+B2/C2
Formel 2 =+C2*100/B2

Hvordan kodes dette i VBA så værdierne sættes i stedet for formler. Skal udfyldes nedad i forhold til antal udfldte rækker....
Avatar billede kim1a Ekspert
06. august 2018 - 11:01 #1
Jeg bruger denne tankegang:
Så længe der er data i rækkens første kolonne så skal den lave tricket.

Det du skal bruge må være "Application....." linjen - hvor jeg i eksemplet her bruger en vlookup.

raekke = 2
    Do While Cells(raekke, 1).Value <> Empty
        Dim Temp As Double
        Temp = Cells(raekke, 6).Value
        Cells(raekke, 6).ClearContents
        Cells(raekke, 6).NumberFormat = "@"
        Cells(raekke, 6).Value = CStr(Temp)
        Cells(raekke, 3).Value = Application.WorksheetFunction.VLookup(Cells(raekke, 6), Workbooks(strFileWithSegments).Sheets(1).Range("A:H"), 8, False)
        raekke = raekke + 1
    Loop
---
Essentielt kan du bruge: (nb utestet)
Application.WorksheetFunction.sum(Cells(raekke, 2)cells(raekke,3))
Avatar billede store-morten Ekspert
06. august 2018 - 16:56 #2
Prøv denne i en kopi:
Sub Sæt_værdier()
Dim ref As String, kl As String, Srk As Long

'D2 vælges og formlen: =B2/C2 indsættes
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]/RC[-1]"
'Kolonne og sidste række i C findes
    kl = Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2)
    Srk = ActiveSheet.Range("C65536").End(xlUp).Row
'Autofill udføres
    Selection.AutoFill Destination:=Range(ActiveCell.Address & ":" & "$" & kl & "$" & Srk)
'Autofil markeres, kopieres og indsættes som værdier
    Range(ActiveCell.Address & ":" & "$" & kl & "$" & Srk).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
       
'E2 vælges og formlen: =C2*100/B2 indsættes
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]*100/RC[-3]"
'Kolonne og sidste række i D findes
    kl = Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2)
    Srk = ActiveSheet.Range("C65536").End(xlUp).Row
'Autofill udføres
    Selection.AutoFill Destination:=Range(ActiveCell.Address & ":" & "$" & kl & "$" & Srk)
'Autofil markeres, kopieres og indsættes som værdier
    Range(ActiveCell.Address & ":" & "$" & kl & "$" & Srk).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
       
    Application.CutCopyMode = False
    Range("E2").Select
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
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