Board logo

標題: [發問] VBA程式遇到第一個值擷取問題 [打印本頁]

作者: 最高機密    時間: 2013-5-14 03:34     標題: VBA程式遇到第一個值擷取問題

A1:A25 為買賣價格
B1:B10 內容都是:買
所以我只抓取第一個買(B1),將A1的價格貼在C1,B2:B10都不管
B13:B15也是買,所以不管
B20:B25內容都是:賣
所以抓取第一個賣(B20),A20的價格貼在C20 ,B21:B25都不管
依此類推,VBA程式寫不出來寫了很久...麻煩高手幫忙一下或指點!
或是http://tw.knowledge.yahoo.com/question/article?qid=1713051300303
作者: GBKEE    時間: 2013-5-14 07:41

回復 1# 最高機密
試試看
  1. Option Explicit
  2. Sub EX()
  3.      EX_買賣 "買"   ' "買" 請修正
  4.      
  5.      'EX_買賣 "賣"
  6.      
  7. End Sub
  8. Sub EX_買賣(買賣 As String)      '指定參數(買賣)的型態為字串
  9.     With Range("b:b")            '物件: B欄範圍
  10.         With .Find(買賣, After:=.Cells(.Count), LOOKAT:=xlWhole)
  11.              'Find(搜尋)( 參數(買賣), B欄底部開始, xlWhole:儲存格內容完全相同))
  12.             .Offset(, 1) = .Offset(, -1)
  13.         End With
  14.     End With
  15. End Sub
複製代碼

作者: 最高機密    時間: 2013-5-14 14:43

感謝你的指點。
第一個買有出現價格,之後第一個賣有出現價錢。
之後又遇到很多個買的第一個買,就沒有價位了。賣也是@@
作者: GBKEE    時間: 2013-5-14 16:36

回復 3# 最高機密
之後又遇到很多個買的第一個買,就沒有價位了。賣也是@@
1#有這段相關的字句嗎? 又不附上檔案或圖示來說明.
作者: lalalada    時間: 2013-5-15 01:28

這樣嗎...."
你這種敘述要不是我剛好太閒才懶得看囧

[attach]14987[/attach]
  1. Sub TEST()
  2. Dim a()
  3. a() = ActiveSheet.Range("A1:B" & [B65536].End(xlUp).Row).Value
  4. Cells(1, 3) = a(1, 1)
  5. For s = 2 To UBound(a)
  6. If a(s, 2) <> a(s - 1, 2) Then Cells(s, 3) = a(s, 1)
  7. Next
  8. End Sub
複製代碼

作者: 准提部林    時間: 2013-5-15 09:36

Sub T20130515_1()
Dim xR As Range, J%, K%, T$
For Each xR In Range([A1], [A65536].End(3))
  T = xR(1, 2):  J = InStr("買賣", T)
  If T <> "" And J > 0 And J <> K Then xR(1, 3) = xR: K = J
Next
End Sub

略過B欄空格及其他字元,只檢測〔買.賣〕兩字是否有更換,
亦即,〔買.賣〕兩字不連續時也可判斷,
K值會保留上一個字是〔買〕或〔賣〕,再與J值比對,即可判斷!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)