- 帖子
- 13
- 主題
- 4
- 精華
- 0
- 積分
- 17
- 點名
- 0
- 作業系統
- mac
- 軟體版本
- os10
- 閱讀權限
- 10
- 註冊時間
- 2015-6-16
- 最後登錄
- 2015-8-10
|
[發問] 如何建立只選取''非隱藏儲存格''的循環語句
本帖最後由 HSINLI 於 2015-7-8 21:53 編輯
如題,程式碼見附件可以執行,但計算出來都不是想要的結果,
一一檢查發現好像是循環語句將篩選結果的“隱藏儲存格”的值也算進去了,但我只需要非隱藏儲存格的值;
自己有試過一些方法offset、resize...但無法解決,故想要來請教一下各位前輩,謝謝!
這程式主要目的是要將交易紀錄(工作表a)做整理,整理出非重複的項目,並計算各非重複項目現有的股數與成本
我的想法是:
先利用AdvancedFilter,將非重複的項目貼於另一工作表b
藉由工作表b有的項目,去利用循環語句一一篩選出工作表a裡該項目的重複項目
然後利用IF判斷是bought還是sold,bought為+,sold為-,再利用循環語句加總至工作表b的儲存格內
如果有更好的寫法就更感激了,謝謝!- Sub 現有交易部位整理()
- Dim po As Worksheet
- Dim 交 As Worksheet
-
- Set po = Sheets("position")
- Set 交 = Sheets("交易紀錄")
-
- Application.ScreenUpdating = False
-
- '過濾出所有重複的symbol,並將之貼至sheets("position")的a5處
- 交.Range("d:d").AdvancedFilter xlFilterInPlace, Range("d:d"), , True
- 交.Range("d:d").SpecialCells(xlCellTypeVisible).Copy po.Range("a5")
- '刪除標題
- po.Range("a5").EntireRow.Delete
-
- '在Sheets("交易紀錄")篩選出在Sheets("交易紀錄")上的symbol,並加以計算QTY貼於Sheets("交易紀錄")
- Dim i As Integer
- Dim last As Integer
- Dim ipo As Integer
- Dim lastpo As Integer
-
- lastpo = po.Range("a5").End(xlDown).Row
-
- For ipo = 1 To lastpo
- '利用貼至Sheets("position")的不重複物件,一一來篩選原表格所含有該物件的所有項目
- 交.ListObjects("表格1").Range.AutoFilter field:=4, Criteria1:=po.Range("a" & ipo)
-
- '"想要"得到篩選出來項目的數目(不包括隱藏)
- last = 交.Range("d2").End(xlDown).Row
- For i = 1 To last
- '如果在ACT.那格是bought的話qty得值為正,ACT.那格是Sold的話qty的值為負,循環加總至Sheets("position")對應的總量儲存格
- If 交.Range("c" & i + 1) = "Bought" Then
- po.Range("c" & ipo + 4) = po.Range("c" & ipo + 4) + 交.Range("e" & i)
- ElseIf 交.Range("c" & i + 1) = "Sold" Then
- po.Range("c" & ipo + 4) = po.Range("c" & ipo + 4) - 交.Range("e" & i)
- End If
- Next i
- Next ipo
- Application.ScreenUpdating = True
- End Sub
複製代碼
活頁簿3.xlsx.zip (10.08 KB)
|
|