返回列表 上一主題 發帖

VBA如何將不同資料的區域抓出分類?

VBA如何將不同資料的區域抓出分類?

請問各位版上大師,小弟初學VBA
思考一個檔案問題已經許久,也爬了很多文章
嘗試用迴圈抓出資料...失敗..
嘗試用陣列抓出資料....也失敗...  想了好幾天弄不出來
想請問版上大人們   

如果我想要抓取一份資料  第一個sheet 是總表(會隨網頁更新抓資料)
如何使用VBA 將他分類變成 sheet2 . 3 .4 的分類呢?  
我將我要的資料區域 變成紅色的字樣  可以請人指導嗎?  

另外最重要的就是  第一個總表的資料列數 會隨著月份不同  而有數量不同
另外  是不是能在  更細分成 sheet 4  跟 5 的種類呢??

另外我在VBA編輯器那邊有留下我的想法.....各位請用力鞭打...我到底是哪裡的觀念不對??

拜謝各位大師~

測試檔案.rar (49.85 KB)

測試檔案.rar (49.85 KB)

回復 12# stillfish00


    感謝stillfish00 的回覆喔

已經有重新寫一篇文章跟您一樣錄影並且做解釋了^^

帖子寫在這裡:http://forum.twbts.com/viewthread.php?tid=9756&highlight=

感謝您的不吝指教~~:D

TOP

回復 10# handsometrowa
EXCEL不能進階篩選後貼到別的工作表,可是VBA可以?

x2.gif

TOP

回復 9# GBKEE


    Dear GBKEE 我已經解答出來了   謝謝您的指導  我上網找到答案了..正在煩惱我沒辦法下載 H 給的那個畫圖程式 該怎麼跟版友們解釋篩選貼過去的問題

重新發一篇文章好了,謝謝您的指導,越來越清楚整個流程了。

TOP

回復 9# GBKEE


    Dear GBKEE
感謝您之前給的程式碼,做出來的東西符合我要的東西,但是後續還可能要添加自動計算

我今天把整個程式分開看了一下,在自動篩選的地方 我真的完全不了解,我今天去EXCEL 看了說明

在定義一個範圍名稱也好,選取一個範圍也好,在使用進階篩選的時候,給予準則並且複製到某個地方的時候..

他都只能在同一個工作表上面使用篩選後的準則條件複製並且貼上,不能跨工作表貼上阿@@"

可是我今天用了條列式偵錯跑程式,可是您一開始資料庫定義完之後,就可以把篩選過後的資料貼到"買權"或是"賣權" 的工作表裡面

然後再進行進一步的篩選,然後再貼上到新增加的名稱工作表上

這真的百思不得其解阿!!  EXCEL不能進階篩選後貼到別的工作表,可是VBA可以?

PS:其實您幫我設計的程式  "買權"跟"賣權" 可以需要可以不要,"分類一"那個是當初解釋用其實不用那個工作表了,註記程式碼之後可以繼續運行,感謝^^

TOP

本帖最後由 GBKEE 於 2013-6-7 15:56 編輯

回復 8# handsometrowa
跟一開始陳述陣列變數那五個的名稱沒有關係的
*成交量        *未沖銷 ->  資料庫欄位名稱不可以有 * ,去掉*的作用而已.
1#說:我想要抓取一份資料  第一個sheet 是總表(會隨網頁更新抓資料)
如何使用VBA 將他分類變成 sheet2 . 3 .4 的分類呢?  

我用了 [進階篩選]的方法
  1. AdvancedFilter 方法 [進階篩選]
  2. 請參閱套用至範例特定基於準則範圍從資料清單中篩選或複製資料。如果初始選定為單個儲存格,則使用儲存格目前的區域x為Variant。
  3. expression.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)
  4. expression      必選。該運算式會傳回 [套用於] 清單中的其中一個物件。
  5. Action     必選的 XlFilterAction 資料類型。
  6. XlFilterAction 可以是這些 XlFilterAction 常數之一。xlFilterCopy ,xlFilterInPlace.
  7. CriteriaRange     選擇性的 Variant。準則範圍。如果省略此引數則無準則。
  8. CopyToRange     選擇性的 Variant。如果 Action 為 xlFilterCopy,此引數指定被複製列的目標範圍。否則忽略此引數。
  9. Unique     選擇性的 Variant。若為 True,則僅篩選唯一的記錄;若為 False,則篩選出所有符合準則的記錄。預設值為 False。
複製代碼
[選擇權總表] 為資料庫以下為它的欄位名稱
契約        到期月份        履約價        買賣權        開盤價        最高價        最低價        最後        結算價        漲跌價        漲跌%        *成交量        *未沖銷        最後最佳買價        最後最佳賣價        歷史最高價        歷史最低價

[選擇權總表]中指定要篩選的欄位,用 AR = Array("到期月份", "履約價", "買賣權", "成交量", "未沖銷契約量") ,一次的複製到
sheet2 . 3 .4 中,便於AdvancedFilter的篩選.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

感謝GBKEE ~我懂了 但是可否再提問一個問題


這個Array ("成交量", "未沖銷契約量")   跟一開始設定的那個AR = Array("到期月份", "履約價", "買賣權", "成交量", "未沖銷契約量") 有關聯嗎? 我想我是這個地方出問題 依照您的想法,
.[L4] ="成交量"
.[M4]= "未沖銷契約量") 只是把Range("L4") 賦值變成 文字檔 而已
所以跟一開始陳述陣列變數那五個的名稱有關係嗎?


.[L4:M4] = Array("成交量", "未沖銷契約量")  
等同
.[L4] ="成交量"
.[M4]= "未沖銷契約量")

TOP

本帖最後由 GBKEE 於 2013-6-5 17:21 編輯

回復 6# handsometrowa
*成交量        *未沖銷 ->  資料庫欄位名稱不可以有 * ,會造成進階篩選不能執行會有錯誤.
.[L4:M4] = Array("成交量", "未沖銷契約量")  
等同
  1. .[L4] ="成交量"
  2. .[M4]= "未沖銷契約量")
複製代碼
篩選程式 "分類一"  '呼叫  篩選程式 這程序 並且傳送參數型態為"字串"      
篩選程式 "賣權"              
篩選程式 "買權"


Private Sub 篩選程式(Sh As String)
              '程式接收的(Sh)參數(String)型態為"字串"
  With Sheets(Sh)  ->   Sheets("分類一")
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

Dear  版大
我最近在拚命的統計資料阿   我遇到難題了 可不可以請問您(因為我還不夠權限 發短訊)
您教導我的程式碼當中

Sub Main()
    AR = Array("到期月份", "履約價", "買賣權", "成交量", "未沖銷契約量")我懂
    With Sheets("選擇權總表")我懂
        .[L4:M4] = Array("成交量", "未沖銷契約量")    有點不懂,這句話的意思是把陣列變數中的這兩個變數賦值給 [L4:M4] ? 不是應該相反??     '"*成交量" ,"*未沖銷'資料庫欄"*" 進階篩選有會有錯誤
        Set Rng = .Range("B4" & .[B4].End(xlDown).Row)   '資料庫 這個資料庫範圍定義我懂
        篩選程式 "分類一"  那這個  篩選程式 以下這三個 分類一 賣權 買權 ?? 這是什麼指令   call?呼叫? 我看他不是注解 應該事會執行的程式吧?
        篩選程式 "賣權"
        篩選程式 "買權"

TOP

回復 4# GBKEE


    再次拜謝!!  

您真的是幫了很大的忙,拿到這份程式碼的時候,內心是又感動,又羞愧..

希望有朝一日早點完成我的東西  可以幫忙更多人

感謝版主~

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題