返回列表 上一主題 發帖

[發問] 只想要抓取符合條件的"第一筆"其他不要

[發問] 只想要抓取符合條件的"第一筆"其他不要

各位高手前輩~
拼拼湊湊弄了下面的程式碼,可以滿足到目前的需求~但是執行速度好慢~
目前可以修正我的程式碼~用更好的方式調整嗎?

我想要將  符合我給的條件 去 A row尋找
找到符合我要的值時,就往上搜索到符合條件的欄位,把這個欄位的值 抓走
可是我只要抓符合條件的第一筆資料,其他的不要~
就這樣,我用了錄製聚集的方式~~傻傻地完成了
可是這不是我想要的速度~好慢喔
有機會調整嗎?懇求指點一二

有想過丟到陣列去~但目前還不會如何去陣列搜索符合我要的第一筆資料~因為會有很多筆類似
懇求指點一二
聽同學說~~方法很多種~但我還沒有開竅 ORZ:'(

Sub TEST ()
Dim zz As String

For i = 2 To Cells(Rows.Count, 10).End(xlUp).Row
    zz = Cells(i, 10).Value
    Columns("A:A").Select

    Selection.Find(What:=zz, after:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate

    Cells.Find(What:="  (net ", after:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
        MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate

    Cells(i, 11) = ActiveCell
    Cells(i, 11) = Right(Cells(i, 11), Len(Cells(i, 11)) - 7)

  Next
  Cells(1, 10).Select


End Sub

回復 2# GBKEE

謝謝超級板主的解答,正在往最後解答前進中
不好意似,因為我沒敘述清楚 我的第一筆條件是什麼?
我RUN了版主的程式碼,會抓取資料~但因為定義的第一筆條件沒有說清楚
所以抓的資料不是需要的~~我有拿錶去計算時間~跑完約要15秒鐘~
舉例:
我想要去Cells(2, 10)一直到相對應的最後一筆資料,當成我搜索的條件
假設    Cells(2, 10)=王小明

這個時候,我就會依據 "王小明" ,去A欄搜索到 "王小明"
可是 "王小明" 只是我在A欄的觸發條件
我會依照"王小明"這個A欄中的儲存格位置,再度繼續往上尋找 "  (net "
可是這個時候總共會遇到三次"  (net
"  (net 小叮噹
"  (net 阿福
"  (net 大雄

但我只想要第一次遇到的"  (net  ,在這個範例中就是大雄,大雄就是我想要丟到Cells(2, 11)的值
因為格式是固定的,"  (net    <--這是固定的
後面的人名都會隨機變動~

很改謝超級板主回覆我~~3Q

TOP

回復 4# gn001038600

感謝gn001038600大大的回覆

因為我的條件已經沒問題了
可是我要使用這個"條件" 繼續在 A欄位中 以"條件"這個儲存格所在位置 test0512.rar (653.7 KB)
繼續"往上搜索"...直到我搜索到第一筆 "條件2"的時候,把它抓走

條件2  (第3次遇到)
條件2  (第2次遇到)
條件2  (第1次遇到)

我只想要抓走 第1次遇到 的條件2 ,放到我想要放的地方

我提供了我原始的範例

TOP

回復 5# boblovejoyce

板主大大
超感謝你的回覆
我敘述的可能不夠清楚
我把我的範例先丟上來~若有空閒 可以幫我喵一下嗎?
test0512.rar (653.7 KB)

TOP

本帖最後由 boblovejoyce 於 2015-5-13 08:53 編輯

回復 10# lpk187

剛剛測試了一下~感謝lpk187
你點中了我的要害....就如你所述的一模一樣~
執行變快了~~差了好多喔~~真的只要2秒以內

謝謝大大
可能我的電腦比較快一點 我看到的是1.8X秒~~神

TOP

回復 9# lpk187

親愛的 lpk187大大
    Set zz = Rng.Find(ar, , , , , 2)
    Set aa = Rng.Find("  (net ", Range(zz.Address), , , , 2)

我想問一下一個概念 為什麼需要這麼多 ,,,,, 逗號
要分隔什麼?什麼意思
請指引給小弟一個觀念?or 有相關訊息我去爬文查找?
感謝你

TOP

感謝兩位說明
我懂了

Ok,我再去讀說明一下

TOP

回復 16# Scott090
@@ 明天去測試一下
現在只有手機可用
現謝過了,之後再來回報和問問題

TOP

回復 16# Scott090
剛剛測試完畢~大大的又更神速了~感謝大大指導

TOP

回復 16# Scott090
Option Base 1
宣告起始陣列從1開始
它的好處或是使用上 有什麼特別之處?

TOP

        靜思自在 : 地上種了菜,就不易長草;心中有善,就不易生惡。
返回列表 上一主題