Board logo

標題: 請益「搜尋關鍵字資料並累加…」 [打印本頁]

作者: gkld    時間: 2013-1-9 20:37     標題: 請益「搜尋關鍵字資料並累加…」

請問板上高手,有8個工作表,其中第2到第8個工作表,

如果要尋找[attach]13859[/attach]大股東合計1、大股東合計2、經理人合計、董監事合計之持股資料並累加至range("bb10"),如圖

(其中大股東合計1、大股東合計2、經理人合計、董監事合計之儲存格位置隨時都會變動,所以無法以sum去做累加)

只好用vba去抓資料:

程式碼如下
sub tes
for i=2 to 8
Sheets(i).Range("bb10") = Cells.Find(What:="大股東合計1", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False, SearchFormat:=False).Offset(, 3).Value + Cells.Find(What:="經理人合計", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False, SearchFormat:=False).Offset(, 3).Value + Cells.Find(What:="大股東合計2", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False, SearchFormat:=False).Offset(, 3).Value + Cells.Find(What:="董監事合計", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False, SearchFormat:=False).Offset(, 3).Value
Next
sub

但是卻出現錯誤,不知道錯在哪兒,能否請板上高手指點指點?謝謝
作者: stillfish00    時間: 2013-1-9 20:55

回復 1# gkld
1. 先確定2~8表都有這4個關鍵字?
     因為你的寫法Find若找不到會傳回Nothing , 就沒辦法用後面offset方法就會出錯
2. Cells.Find 的Cells沒指定工作表會自動用ActiveWorksheet
     建議改成如下試看看(注意Cells前面都要多一點)
     For i=2 to 8
     With Sheets(i)
         .Range("bb10") = .Cells.Find(What:="大股東合計1", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
         xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
         中略
     End With
     Next
作者: gkld    時間: 2013-1-9 21:02

回復 2# stillfish00
感謝樓上高手提醒,您這個方法我也po文前也試過,也是不行!!

不過經您提點後,我去看了一下每個工作表,發現…原來其中有1個工作表的資料跑掉了

沒有我要搜尋的關鍵字資料,我想問題應該是出在這邊!!

我再回去試試看     感恩丫~~
作者: stillfish00    時間: 2013-1-9 21:13

回復 3# gkld
喔  對了 , 不用VBA可用公式  
=IFERROR(VLOOKUP("大股東合計1",AY:BB,4,FALSE),0)+IFERROR(VLOOKUP("大股東合計2",AY:BB,4,FALSE),0)+IFERROR(VLOOKUP("經理人合計",AY:BB,4,FALSE),0)+IFERROR(VLOOKUP("董監事合計",AY:BB,4,FALSE),0)
找不到可不計
作者: gkld    時間: 2013-1-9 22:21

回復 4# stillfish00

剛試過了,真的是其中一個工作表裡面少了要搜尋的關鍵字~

現在已解決了~  哈

感謝提出另一個不用vba的解法(雖然我還是用vba去解決)

又多學了一招 !!
作者: a8602soul    時間: 2013-1-15 15:02

有所啟發 感謝兩位大大的討論與解惑




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