2013-07-22 4 views
0

안녕하세요 모두 저는 주어진 셀 값을 수식으로 설정하고 각 셀 값에 대해이 작업을 수행하지만 수식을 변경하는 여러 줄의 줄이있는 Excel vba의 하드 코드가 있습니다. 아래의 특정 열을 봅니다.Excel VBA 설정 셀 값을 수식으로

그래서 내 질문에 수식이 자동으로 실제의 열에 따라 자사의보고 열을 변경할 수 있도록 한 줄에 아래의 물건을 코딩 할 수있는 방법이있다.

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 열로 조정됩니다. 범위 ("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

당신은 항상

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

그냥 있어야 셀 참조에서 $를 제거 귀하의 경우 범위 등 G10:P10의 수식을 설정할 수 있습니다 동적으로 변경되었습니다.

자세한 내용은 Set formula to a range of cells을 참조하십시오.

+0

그래, 그냥 $를 제거하면 공식이 자동으로된다. 모든 행 = G를 열로하는 공식을 설정하더라도 변경됩니까? – user1305569

+0

'Set shownDatabaseRows = Sheets ("Standalone Non Clustered"). Range ("10:10")'에서 열을 언급하지 않았으므로,'Sheets (showndatabaseRows.Formula = "= CEILING (워크 시트! G $ 9 * (1 + 워크 시트! G $ 10 + Info! $ B $ 14), 5)". – AKS

관련 문제