返回列表 上一主題 發帖

match 搜尋不同工作表可以指定變數嗎?

回復 38# EGBT
401298E-45 到 3.402823E38 是科學記號,請GOOGLE 查看了解
Dim i, y, x As Single
'i, y 沒指定都是 As Variant,V請自行查看 VBA 的說明
i, y             程式可以接受傳回錯誤值,
x As Single 必須是傳回數字,程式不接受錯誤值.
  1. Application.Match("A1", Range("C1:C14"), -1)
複製代碼
請看40樓的程式碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 41# GBKEE


    Match回傳是數字(列)沒錯..但我的程式碼如下

Match打 1 or -1 都不行...打0就可以 但找不到相同的數值他會找"小於"數值的,卻不是找"等於"數值的

附檔案
  1. Sub test()
  2. Dim x As Single
  3. x = Application.Match(Range("A1"), Range("B:B"), -1)
  4. Sheets("Sheet1").Range("F1") = x
  5. End Sub
複製代碼

ttt.rar (12.74 KB)

附檔案

TOP

本帖最後由 GBKEE 於 2015-9-24 15:37 編輯

回復 42# EGBT
x As Single (是針對溢位 修改的型態 )
Match 找不到傳回錯誤值,與x的型態不對,故程式有型態不符合的誤值.
所以必須是 Dim x As Variant

Match打 1 or -1 都不行...打0就可以   
應該是 Match打 0 or -1 都不行...打1就可以
  1. Match_type    是個數字,其值有三種可能:-1、0 或 1。用以指定 Microsoft Excel 如何從 lookup_array 裡尋找 lookup_value。
  2. 如果 match_type 是 1,則 MATCH 函數會找到等於或僅次於 lookup_value 的值。Lookup_array 必須以遞增次序排列:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE。
  3. 如果 match_type 是 0,則 MATCH 函數會找第一個完全等於 lookup_value 的比較值。Lookup_array 可以依任意次序排列。
  4. 如果 match_type 是 -1,則 MATCH 函數會找到等於或大於 lookup_value 的最小值。Lookup_array 必須以遞減次序排序:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ...,以此類推。
  5. 如果 match_type 引數被省略,則假設其值為 1。
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 43# GBKEE


    如果 match_type 是 -1,則 MATCH 函數會找到等於或大於 lookup_value 的最小值。Lookup_array 必須以遞減次序排序:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ...,以此類推。

關鍵就是在...要遞減排序...我看Match說明

只有打到match_type 為 1 , Lookup_array 必須以遞增排列...

我想請問一下...假如說 match_type = -1 (找遞減)

數值:2015/1/1

陣列:
2015/1/12
2014/12/20
2014/12/10
2014/12/5

以 match_type = -1 會找到 2014/12/20

我能控制在 5日內嗎? 也就是說 找2014/12/25 ~ 2014/12/29 假如沒有就是找不到

TOP

回復  citizen0923
GBKEE 發表於 2015-9-24 05:43



謝謝G大~ 我試出來了!!
Private Sub CommandButton1_Click()
Dim sheetx As String
sheetx = Cells(1, 1)
Cells(4, 1) = Application.Match(Range("A3"), Sheets(sheetx).Range("A1:A10"), 0)
End Sub
改成這樣~就可以自由的更改搜尋的分頁名稱了~ 再次感謝您~!!謝謝

TOP

回復 44# EGBT

match_type 是 1,則 MATCH 函數會
找到等於或僅次於 lookup_value 的值。Lookup_array 必須以遞增次序排列:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE。
match_type 是 -1,則 MATCH 函數會
找到等於或大於 lookup_value 的最小值。Lookup_array 必須以遞減次序排序:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ...,以此類推。
如果 match_type 引數被省略,則假設其值為 1
  1. Sub test()
  2.     Dim x As Variant, Mdate As Date
  3.     x = Application.Match(Range("A1"), Range("B:B"), -1)
  4.     If IsNumeric(x) Then
  5.        Mdate = Range("b" & x)
  6.        x = Range("A1") - Mdate
  7.        If x >= 0 And x <= 5 Then MsgBox Mdate
  8.     End If
  9. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 46# GBKEE


    大大求救..為什麼會出現"載入DLL時發生錯誤"

工具 -> 設定引用項目都有打勾

我檔案都有備份,只是我想知道為什麼會出現"載入DLL時發生錯誤"...

但不是因為程式碼才導致"載入DLL時發生錯誤"的發生,因為我試過很次.....

引用項目.png (7.33 KB)

都有打勾

引用項目.png

TOP

回復 47# EGBT
    關閉檔案(要存檔).再開啟看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 48# GBKEE


    基本上打開出現"載入DLL時發生錯誤"

這時候不管存檔與否,程式都已經消失不見了

TOP

回復 48# GBKEE


    請問GBKEE大大

關於Combobox下拉是選單的List

清單內容能不能從程式碼打好預設,而不是從儲存格?

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題