返回列表 上一主題 發帖

[發問] 關於 Find用法

請問 VBA "Find" 用法

我想問Find的用法,
有先設定profit 的range

  A= Profit.Fine(5.5555,  , xl value,2).Row
想要在profit 找5.5555 這個值, 然後讀取該欄位的 Row address

問題一: xlvalue後面那一項(2)是指收尋得小數點位數嗎?
      1.是5.5555他是以 5.55去找相同的值
      2. 還是, 找Profit range裡 小數點2位的值


問題二:
    如果 Profit 裡的小數位數是無窮的, 如何用find找到相同的值呢?

問題三;
  利用find 來找值 可以精準地找到嗎
若想要找的值5.5   收尋範圍的值 5.55,  5.555,  5.5555,  5.5
可以直接找到5.5 而不是5.55555

問題四:
當要收尋範圍裡的值小數位數很多時, 我們讓它以2位小數呈現
例如 5.234= 5.23

當去find該值時, 他讀取的是5.23(更改呈現方式之後) 還是 原先5.234呢?

Find 用法.rar (10.16 KB)

TOP

找整個數字(5.55)的方法:
   Set b = profit.Find(5.55, , xlValues, xlWhole)
找以5.55"為首" 的方法 (如5.55, 5.55001, 5.552,5.55999....)
   Set b = profit.Find(5.55, , xlValues, xlpart)
(與這個一樣    Set b = profit.Find(5.55, , xlValues)

留意excel是以"文字"的方式找, 不是以數字大少來找
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

回復 2# kimbal


    恩~ 謝謝

TOP

[發問] 關於 Find用法

請各位幫忙, 不知道哪邊出問題
Sub test()

Dim Myrange As Range
Set Myrange = Range(Cells(6, 2), Cells(8, 2))

Cells(1, 1) = Myrange.Find(Cells(3, 2), , xlValues, xlwhole).Row
Cells(2, 1) = Myrange.Find(Cells(3, 2), , xlValues,xlwhole).Column

End Sub

我想要找到該值的欄位資料卻無法
'錯誤顯示: '沒有設定物件變數或with 區塊變數

test.rar (11.33 KB)

回復 1# Helain
  1. Sub Ex()
  2.     Dim Myrange As Range, Rng As Range
  3.     Set Myrange = Range(Cells(6, 2), Cells(8, 4))
  4.     Set Rng = Myrange.Find(Cells(3, 2), , xlValues, xlWhole)
  5.     If Not Rng Is Nothing Then
  6.         Cells(1, 1) = Rng.Row
  7.         Cells(2, 1) = Rng.Column
  8.     End If
  9. End Sub
  10. '''''''''''''''''''''''''''''''''''
  11. Sub test()
  12. Dim Myrange As Range
  13. 'Set Myrange = Range(Cells(6, 2), Cells(8, 2))  '這裡的 Cells(8, 2) 是 B8
  14. Set Myrange = Range(Cells(6, 2), Cells(8, 4))   '這裡的 Cells(8, 4) 是 D8
  15. '尋找不到   錯誤顯示: '沒有設定物件變數或with 區塊變數
  16. Cells(1, 1) = Myrange.Find(Cells(3, 2), , xlValues, xlWhole).Row
  17. Cells(2, 1) = Myrange.Find(Cells(3, 2), , xlValues, xlWhole).Column
  18. End Sub
複製代碼

TOP

我想問, 後來我這樣做還是不型
出現"陣列索引超出範圍" 是什麼意思呢???

Find.rar (12.33 KB)

TOP

回復 6# Helain

參數錯誤
LookIn的參數 xlValues
但是,你的數值是直接KEY_IN的
LookIn參數應使用xlFormulas才能搜尋的到
通常像這樣的搜尋會省略 LookIn引數
直接使用LookAt引數,使用xlWhole來搜尋完全符合的內容

你可試著操作編輯/尋找功能,把程式錄製下來
去比較搜尋條件不同,造成甚麼不同結果
學海無涯_不恥下問

TOP

本帖最後由 GBKEE 於 2011-11-10 08:22 編輯

回復 6# Helain

請任意輸入 "aaaaaaa"
RMax_Row = Cells.Find("aa", , xlValues, xlPart).Row
RMax_Row = Cells.Find("aa", , xlFormulas, xlPart).Row                  有找到:這兩程式碼沒錯誤

RMax_Row = Cells.Find("aa", , xlValues, xlWhole).Row
RMax_Row = Cells.Find("aa", , xlFormulas, xlWhole).Row           沒有找到:這兩程式碼會錯誤    陣列索引超出範圍

請不要用上面的語法 正確的寫法如下
expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
Set R_Max = R_Profit.Find(What:=Rmax,LookIn:= xlFormulas,LookAt:= xlWhole)
Set R_Max = R_Profit.Find(LookIn:=xlFormulas, LookAt:=xlWhole, What:=Rmax)  
全部有指明參數可任意放置參數的位置 但不可以 參雜著有指明參數 及沒指明的參數

Set R_Max = R_Profit.Find(Rmax, ,  xlValues, xlWhole)  
Set R_Max = R_Profit.Find(Rmax, , xlFormulas, xlWhole)

如確定 先前的搜尋不是註解   LookIn:=xlComments 可用
Set R_Max = R_Profit.Find(Rmax, ,  , xlWhole)
    If Not R_Max Is Nothing Then
        R_MaxRow = R_Max.Row
        R_Maxcolumn = R_Max.Column
    End If

TOP

我重新試了一下, 還是不行耶!!
我想要找出其中某一範圍裡的最大值,
再回去原來範圍找出那個最大值的欄位
可是 卻找不到

test_3.rar (10.89 KB)

TOP

本帖最後由 GBKEE 於 2011-11-10 14:10 編輯

回復 9# Helain
請檢查一下語法的符號
語法正確時 第1個字母會是大寫的      Row = QrF.Row   
不建議 用關鍵字做變數  Row,Column ...
  1. If Not QrF Is Nothing Then
  2.         Row = QrF.Row
  3.         Column = QrF.Column
  4.     End If
複製代碼

TOP

        靜思自在 : 一個人的快樂.不是因為他擁有得多,而是因為他計較得少。
返回列表 上一主題