2015-09-20 14 views
-1

我有兩個問題的公式計算的值,我將不勝感激了很多幫助的:添加循環的公式和只顯示

  1. 我已經VBA鏈接到一個按鈕,用於計算在某些單元格的值基於輸入的參數。我仍然是一個基本的用戶,但無法讓它循環。目的是讓VBA繼續計算,直到給定單元格中的值爲零。
  2. 是否有可能讓VBA只輸入單元格中的輸入值而不輸入相應的公式?請參見下面的代碼的一個片段:

    子Formular1() 'Formular1

    Range("H17").Select 
    Selection.End(xlDown).Select 
    ActiveCell.Offset(1, 0).Range("A1").Select 
    ActiveCell.FormulaR1C1 = "=ROUNDDOWN((RC[-1]-RC[-2])/30,0)" 
    ActiveCell.Select 
    
    ' Formular2 Macro 
    Range("I17").Select 
    Selection.End(xlDown).Select 
    ActiveCell.Offset(1, 0).Range("A1").Select 
    ActiveCell.FormulaR1C1 = "=RC[-5]/RC[-1]" 
    ActiveCell.Offset(1, 0).Range("A1").Select 
    
    ' Formular 3 
    Range("J17").Select 
    Selection.End(xlDown).Select 
    ActiveCell.Offset(1, 0).Range("A1").Select 
    ActiveCell.FormulaR1C1 = "=R4C9" 
    Range("J20").Select 
    
    End Sub 
    

回答

0

您可以寫公式進入細胞,並立即還原式到其返回值或計算值並將其直接寫入單元格。

dim nr as long 
'option 1 
with activesheet 
    nr = .cells(rows.count, "H").end(xlup).offset(1, 0).row 
    .cells(nr, "H").formula = "=TRUNC((G" & nr & "-F" & nr & ")/30)" 
    .cells(nr, "I").formula = "=G" & nr & "/F" & nr 
    .cells(nr, "J").formula = "=I4" 
    with .cells(nr, "H").resize(1, 3) 
     .value = .value 
    end with 
end with 

'option 2 
with activesheet 
    nr = .cells(rows.count, "H").end(xlup).offset(1, 0).row 
    .cells(nr, "H") = int((.cells(nr, "D").value - .cells(nr, "H").value)/30) 
    .cells(nr, "I") = cdbl(.cells(nr, "G").value/.cells(nr, "F").value) 
    .cells(nr, "J") = .cells(4, "I").value 
end with 

在那裏你有每種方法的例子。我通過使用TRUNC function代替ROUNDDOWN function來簡化您的第一個配方,但在這種情況下它們都執行相同的操作。

我有點擔心,您似乎在將這些公式/值寫入新行,但您引用同一行中的其他單元格。我將不得不假設這些其他單元格先填充了公式或值。

+0

我剛剛更新,它的工作方式像魔術一樣。謝謝。但是,我想做一些改變,我不想摧毀你所做的。我想將代碼開始處的相對單元格選擇更改爲絕對,並且我想添加一個循環。首先,我希望計算始終從第19行開始,並在列G沒有任何值的行上結束。再次感謝。你能否給你的代碼添加評論,這樣我至少可以學習和改進? – Avictomama

-2

不完全確定你正在嘗試做什麼。但

顯然我沒有使用你的範圍,因爲你沒有提供足夠的信息來說明你想做什麼。

如果您想要通過一系列單元格並將公式轉換爲值,則會是這樣的。

for each rcell in worksheet("myworksheet").Range("A1:A15").Cells 
if rcell.value = "0" then 
exit sub 
else 
rcell.value = rcell.value 
end if 
next rcell 

順便說一句,一位朋友告訴我他使用的這個網站。他說他們提供了一些關於基本的Excel公式的免費培訓視頻,沒有vba,但他用它來爲他創建一個宏,這是一個非常合理的成本。

http://www.excelformulashelp.com/

+0

感謝您的回覆。我認爲jeeped已經公平地處理了這個問題。但是,您能否請您提供解決方案來回答問題? – Avictomama