標題:
[發問]
運算問題
[打印本頁]
作者:
jackyliu
時間:
2013-8-18 11:12
標題:
運算問題
麻煩版大 幫幫忙 !
我把內容都寫到 附件裡了,這樣會比較方便,閱覽 ~
感恩 ~
作者:
GBKEE
時間:
2013-8-20 16:38
回復
1#
jackyliu
這程式碼是依據,附檔[TEST]的樞紐分析表的現有結構而寫的
Sub Ex()
Dim D_1, D_2, R As Range, M As Integer
With Sheets("TEST").PivotTables(1) '工作表的幣一個,樞紐分析表.
.Parent.Cells.Interior.ColorIndex = xlNone
With .ColumnRange
.Cells(1, .Columns.Count + 1).EntireColumn.Clear '樞紐分析表的欄位的最右邊的下一欄: 整欄 全部清除
End With
Application.DisplayAlerts = False
.SourceData = Sheets("RAW").Range("A1").CurrentRegion.Address(, , xlR1C1, 1)
'更新資料庫的位置 CurrentRegion不會包含有空白的資料
'原先資料庫的位置=> A:D 的整欄包含有空白的資料
Application.DisplayAlerts = True
.PivotCache.Refresh
With .ColumnRange '樞紐分析表的欄位
M = .Cells(1, .Columns.Count + 1).Column '樞紐分析表的欄位的最右邊的下一欄
D_1 = CDate(Application.Large(.Rows(2), 1)) '最大的日期
D_2 = CDate(Application.Large(.Rows(2), 2)) '次一日的日期
D_1 = .Rows(2).Find(D_1, LookIn:=xlValues).Column '最大日期的欗號
D_2 = .Rows(2).Find(D_2).Column '次一日的欗號
End With
For Each R In .RowRange.Columns(1).Cells '樞紐分析表的列的第1欄
If InStr(R, "合計") Then
R.Resize(, .RowRange.Columns.Count + .ColumnRange.Columns.Count).Interior.Color = vbYellow
With .Parent '樞紐分析表的父層 :工作表
.Cells(R.Row, M) = .Cells(R.Row, D_1) - .Cells(R.Row, D_2)
End With
End If
Next
End With
End Sub
複製代碼
作者:
jackyliu
時間:
2013-8-20 21:46
回復
2#
GBKEE
版大:
目前指針對有合計的部份做運算,能增加每行也加入運算嗎?
作者:
GBKEE
時間:
2013-8-21 14:06
回復
3#
jackyliu
Sub Ex()
Dim D_1, D_2, R As Range, M As Integer
With Sheets("TEST").PivotTables(1) '工作表的幣一個,樞紐分析表.
.Parent.Cells.Interior.ColorIndex = xlNone
With .ColumnRange
.Cells(1, .Columns.Count + 1).EntireColumn.Clear '樞紐分析表的欄位的最右邊的下一欄: 整欄 全部清除
End With
Application.DisplayAlerts = False
.SourceData = Sheets("RAW").Range("A1").CurrentRegion.Address(, , xlR1C1, 1)
'更新資料庫的位置 CurrentRegion不會包含有空白的資料
'原先資料庫的位置=> A:D 的整欄包含有空白的資料
Application.DisplayAlerts = True
.PivotCache.Refresh
With .ColumnRange '樞紐分析表的欄位
M = .Cells(1, .Columns.Count + 1).Column '樞紐分析表的欄位的最右邊的下一欄
D_1 = CDate(Application.Large(.Rows(2), 1)) '最大的日期
D_2 = CDate(Application.Large(.Rows(2), 2)) '次一日的日期
D_1 = .Rows(2).Find(D_1, LookIn:=xlValues).Column '最大日期的欗號
D_2 = .Rows(2).Find(D_2).Column '次一日的欗號
End With
Set R = .RowRange.Columns(1).Cells(2)
Do While Not Intersect(R, .RowRange.Columns(1)) Is Nothing
If InStr(R, "合計") Then
R.Resize(, .RowRange.Columns.Count + .ColumnRange.Columns.Count).Interior.Color = vbYellow
End If
With .Parent '樞紐分析表的父層 :工作表
.Cells(R.Row, M) = .Cells(R.Row, D_1) - .Cells(R.Row, D_2)
End With
Set R = R.Offset(1)
Loop
End With
End Sub
複製代碼
作者:
jackyliu
時間:
2013-8-22 21:32
回復
4#
GBKEE
版大 :
好像沒有 一開始需求說明的第二項功能耶...
2.
提供選擇日期區間,方便看日期區間內的資料。【不用使用Execl 內的勾選功能】
這有辦法做到用 提供選擇日期區間 嗎 ?
作者:
GBKEE
時間:
2013-8-23 14:41
回復
5#
jackyliu
這有辦法做到用 提供選擇日期區間 嗎?
是可以的,但你應該是多認識VBA的函數,物件的屬性,方法.練習自己來寫,才有成就感的.
作者:
jackyliu
時間:
2013-8-24 22:20
回復
6#
GBKEE
感謝 ~
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)