2013-07-22 135 views
0

嘿,大家我在excel vba中有一些硬編碼,它會將給定的單元格值設置爲公式,並且我有多行代碼可以爲每個單元格值執行此操作,但會更改公式看看它下面的具體欄目。Excel VBA將單元格值設置爲公式

所以我的問題是,是否有任何方式的代碼下面的東西,在1號線,這樣的公式會自動改變其尋找列在取決於列其實際。

Sheets("Standalone Non Clustered").Range("G10").Formula = "=CEILING(Worksheet!$G$9*(1+Worksheet!$G$10+Info!$B$14),5)" 
    Sheets("Standalone Non Clustered").Range("H10").Formula = "=CEILING(Worksheet!$H$9*(1+Worksheet!$H$10+Info!$B$14),5)" 
    Sheets("Standalone Non Clustered").Range("I10").Formula = "=CEILING(Worksheet!$I$9*(1+Worksheet!$I$10+Info!$B$14),5)" 
    Sheets("Standalone Non Clustered").Range("J10").Formula = "=CEILING(Worksheet!$J$9*(1+Worksheet!$J$10+Info!$B$14),5)" 
    Sheets("Standalone Non Clustered").Range("K10").Formula = "=CEILING(Worksheet!$K$9*(1+Worksheet!$K$10+Info!$B$14),5)" 
    Sheets("Standalone Non Clustered").Range("L10").Formula = "=CEILING(Worksheet!$L$9*(1+Worksheet!$L$10+Info!$B$14),5)" 
    Sheets("Standalone Non Clustered").Range("M10").Formula = "=CEILING(Worksheet!$M$9*(1+Worksheet!$M$10+Info!$B$14),5)" 
    Sheets("Standalone Non Clustered").Range("N10").Formula = "=CEILING(Worksheet!$N$9*(1+Worksheet!$N$10+Info!$B$14),5)" 
    Sheets("Standalone Non Clustered").Range("O10").Formula = "=CEILING(Worksheet!$O$9*(1+Worksheet!$O$10+Info!$B$14),5)" 
    Sheets("Standalone Non Clustered").Range("P10").Formula = "=CEILING(Worksheet!$P$9*(1+Worksheet!$P$10+Info!$B$14),5)" 

查看如何每個範圍從字母G到P,並且每行的公式都會針對該G到P列進行調整。有沒有辦法讓Range有一行(「G10:P10」),並根據其實際在電子表格中的列進行公式更改?

編輯:

刪除$語法解決了這一問題,但我來了另外一個問題:

說我有設置爲變量的範圍內,我想添加一行到範圍變量並在上面的公式行中使用該變量。我怎麼會去增加變量由1

 Set shownDatabaseRows = Sheets("Standalone Non Clustered").Range("10:10") 
Set hiddenDatabaseRows = Sheets("Standalone Non Clustered").Range("11:108") 

hiddenDatabaseRows.EntireRow.Hidden = True 
shownDatabaseRows.EntireRow.Hidden = False 

    Sheets("Standalone Non Clustered").shownDatabaseRows.Formula = "=CEILING(Worksheet!G$9*(1+Worksheet!G$10+Info!$B$14),5)" 


For Each cell In rng 

    If cell.Value >= 2048 Then 


     shownDatabaseRows = shownDatabaseRows.Count + 1 

     shownDatabaseRows.EntireRow.Hidden = False 

       Sheets("Standalone Non Clustered").shownDatabaseRows.Formula = "=(CEILING(Worksheet!G$9*(1+Worksheet!G$10+Info!$B$14),5))/2" 

     ... 

我在公式行,以便即時通訊思想,什麼是錯與我建立shownDatabaseRows變量的方式得到一個錯誤。有任何想法嗎?

+0

你最好開始另一個問題。 'Count'是隻讀的,你不能改變它。我不是很瞭解你想要什麼。向shownDatabaseRows添加一個新行? 'set shownDatabaseRows = Union(shownDatabaseRows,cell.EntireRow)'? 'Sheets(「Standalone Non Clustered」)。shownDatabaseRows'沒有意義。 –

+0

我開始了一個新的問題:http://stackoverflow.com/questions/17789077/adding-an-offset-row-to-a-given-range-excel-vba – user1305569

回答

4

Sheets("Standalone Non Clustered").Range("G10:P10").Formula = "=CEILING(Worksheet!R9C[0]*(1+Worksheet!R10C[0]+Info!$B$14),5)"

+0

刪除$工作,但與範圍變量有問題檢查我的編輯 – user1305569

0

喜歡的東西....

Sheets("Standalone Non Clustered").Range("G10").Formula = "=CEILING(Worksheet!$G$9*(1+Worksheet!$G$10+Info!$B$14),5)" 
Sheets("Standalone Non Clustered").Range("G10:P10").FillRight 
2

您可以隨時在你的情況設置公式爲如G10:P10範圍

Sheets("Standalone Non Clustered").Range("G10:P10").Formula = "=CEILING(Worksheet!G9*(1+Worksheet!G10+Info!$B$14),5)" 

剛剛從單元格引用應該是去除$動態改變。

此外,您可以按照Set formula to a range of cells進一步澄清。

+0

好的,所以只需刪除$將公式自動即使它的設置每行= G的列作爲列的公式? – user1305569

+0

正如我在'=表(「獨立非羣集」),範圍(「10:10」)',你沒有提到的列設置shownDatabaseRows看到的,所以我不知道你會實現通過'表( 「獨立非集羣」)。shownDatabaseRows.Formula =「= CEILING(Worksheet!G $ 9 *(1 + Worksheet!G $ 10 + Info!$ B $ 14),5)」'。 – AKS

相關問題