標題:
[發問]
請問不連續的儲存格做公式填滿的動作,代碼能簡化嗎
[打印本頁]
作者:
freeffly
時間:
2013-6-19 15:49
標題:
請問不連續的儲存格做公式填滿的動作,代碼能簡化嗎
本帖最後由 freeffly 於 2013-6-19 15:51 編輯
1.公式不同如下如果填滿動作一樣有辦法簡化嗎
2.公式相同不連續填滿的動作一樣能簡化嗎(v7 v14 v16 v18 公式相同)
曾經天真的想用union+array的方式處理
發現不行,不知道有沒有人有好方法簡略下面的代碼
Sub 銷貨公式()
Application.ScreenUpdating = False
nC = Sheets("銷貨").Range("A4").End(xlToRight).Offset(, 1).Column
nR = Sheets("銷貨").Range("A65536").End(xlUp).Row
nC1 = Sheets("銷貨").Range("A4").End(xlToRight).Offset(, 1).Column - 2
x = [iv1].End(xlToLeft).Column - 21
With Sheets("全部")
With .Range("V2")
.FormulaR1C1 = _
"=GETPIVOTDATA(""本幣銷貨金額"",銷貨!R3C1,""月份"",R1C)"
.AutoFill .Resize(1, x)
End With
With .Range("V9")
.FormulaR1C1 = _
"=SUMPRODUCT((銷貨!R5C" & nC & ":R" & nR & "C" & nC & "=""營業課"")*(銷貨!R4C3:R4C" & nC1 & "=R1C),銷貨!R5C3:R" & nR & "C" & nC1 & ")"
.AutoFill .Resize(1, x)
End With
With .Range("V4")
.FormulaR1C1 = "=GETPIVOTDATA(""合計未收帳款"",帳齡!R1C1,""月份"",R1C)"
.AutoFill .Resize(1, x)
End With
With .Range("V7")
.FormulaR1C1 = "=VLOOKUP(R1C20,單頭資料!C1:C45,45,0)"
.AutoFill .Resize(1, x)
End With
With .Range("V14")
.FormulaR1C1 = "=VLOOKUP(R1C20,單頭資料!C1:C45,45,0)"
.AutoFill .Resize(1, x)
End With
With .Range("V16")
.FormulaR1C1 = "=R[-14]C-R[-7]C"
.AutoFill .Resize(1, x)
End With
With .Range("V18")
.FormulaR1C1 = "=R[-14]C-R[-7]C"
.AutoFill .Resize(1, x)
End With
With .Range("V21")
.FormulaR1C1 = "=VLOOKUP(R1C20,單頭資料!C1:C45,45,0)"
.AutoFill .Resize(1, x)
End With
end with
End Sub
複製代碼
作者:
stillfish00
時間:
2013-6-19 17:05
2.公式相同不連續填滿的動作一樣能簡化嗎(v7 v14 v16 v18 公式相同) ...
freeffly 發表於 2013-6-19 15:49
v7 v14 v16 v18 公式不同阿?
你的代碼跑完結果是正確的嗎?
作者:
stillfish00
時間:
2013-6-19 17:23
回復
1#
freeffly
Sub 銷貨公式()
Application.ScreenUpdating = False
nC = Sheets("銷貨").Range("A4").End(xlToRight).Offset(, 1).Column
nR = Sheets("銷貨").Range("A65536").End(xlUp).Row
nC1 = Sheets("銷貨").Range("A4").End(xlToRight).Offset(, 1).Column - 2
x = [iv1].End(xlToLeft).Column - 21
With Sheets("全部")
.Range("V2").Resize(1, x).FormulaR1C1 = "=GETPIVOTDATA(""本幣銷貨金額"",銷貨!R3C1,""月份"",R1C)"
.Range("V9").Resize(1, x).FormulaR1C1 = "=SUMPRODUCT((銷貨!R5C" & nC & ":R" & nR & "C" & nC & "=""營業課"")*(銷貨!R4C3:R4C" & nC1 & "=R1C),銷貨!R5C3:R" & nR & "C" & nC1 & ")"
.Range("V4").Resize(1, x).FormulaR1C1 = "=GETPIVOTDATA(""合計未收帳款"",帳齡!R1C1,""月份"",R1C)"
For Each area In .Range("V7,V14,V21").Areas
area.Resize(, x).FormulaR1C1 = "=VLOOKUP(R1C20,單頭資料!C1:C45,45,0)"
Next
For Each area In .Range("V16,V18").Areas
area.Resize(, x).FormulaR1C1 = "=R[-14]C-R[-7]C"
Next
End With
End Sub
複製代碼
作者:
freeffly
時間:
2013-6-19 17:40
回復
3#
stillfish00
先收下看看,謝謝了
明天測試完再回覆結果
不過用for each好像很慢
因為我剛剛有用for each 及 for next的方式去跑別的比較起來
for each好像曼暸些
作者:
freeffly
時間:
2013-6-19 17:46
回復
3#
stillfish00
剛仔細看一下
應該不會花很久時間
測試結果可以
這種解決方式不錯
學到一種
相當感謝
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)