返回列表 上一主題 發帖

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

回復 3# citizen0923
  1. Private Sub CommandButton1_Click()
  2.     'Cells(4, 1) = Application.Match(A3, Sheets("AAA").Range("A1:A10"), 0)
  3.     Cells(4, 1) = Application.Match([A3], Sheets("AAA").Range("A1:A10"), 0)
  4.     Cells(4, 1) = Application.Match(Range("A3"), Sheets("AAA").Range("A1:A10"), 0)
  5. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

G大您好~這兩篇我都有看過了喔~ 不過能理解有限,
大概知道[]中不接受變數的字串,所以把程式碼改成
Private Sub CommandButton1_Click()
Cells(4, 1) = Application.Match(A3, Sheets("AAA").Range("A1:A10"), 0)
End Sub
'目標是透過目前工作表CCC的A3欄資料(AA001),去match工作表AAA中A1~A10符合AA001的位置後,寫在工作表CCC的Cells(4, 1)位置
如此還是會找不到目標喔~ 能幫忙指點嗎~~ 不好意思了

TOP

回復 34# GBKEE


    例如附檔~

這樣子好像也是 #N/A、錯誤2048 ...哈....可能我還沒辦法領悟GBKEE大大所說的
  1. Sub test()
  2. Dim i, y, x As Single
  3. i = Application.Match("A1", Range("C1:C14"), -1)
  4. Range("B1") = i
  5. y = Application.Match("A2", Range("C1:C14"), -1)
  6. Range("B2") = y
  7. x = Application.Match("A3", Range("C1:C14"), -1)
  8. Range("B3") = x
  9. End Sub
複製代碼

test1.zip (9.57 KB)

如附檔

TOP

回復 34# GBKEE


    再請問GBKEE大大

Integer範圍為 -32,768 到 32,767 之 16 位元會溢位,

而Single負數的時候是從 -3.402823E38 到 -1.401298E-45

正數的時候是從 1.401298E-45 到 3.402823E38,為什麼Single就不會溢位呢?我還是不太懂這個道理...

ReDim AR(1 To Rows.Count)
    AR(Rows.Count) = #1/1/2015# ' <- 不能寫死,Match就是-1,抓不到的時候才會找大於自己的日期
    I = Application.Match(#2/1/2015#, AR, -1)
    MsgBox I

哈~很感謝GBKEE大大這麼耐心的回覆解答啊~

TOP

回復 33# EGBT
  1. Option Explicit
  2. Sub Ex()
  3.    ' Dim I As Integer, AR()  '這樣會溢位
  4.     'Integer 變數係以範圍為 -32,768 到 32,767 之 16 位元 (2 個位元組) 數字的形式儲存
  5.     Dim I As Single, AR()
  6.     'Single (單精度浮點數) 變數係以 IEEE 32 位元 (4 個位元組) 浮點數字的形式儲存,
  7.     '它的範圍在負數的時候是從 -3.402823E38 到 -1.401298E-45,
  8.     '而在正數的時候是從 1.401298E-45 到 3.402823E38。Single 的型態宣告字元為 !。
  9.    
  10.     ReDim AR(1 To Rows.Count)
  11.     AR(Rows.Count) = #1/1/2015#
  12.     I = Application.Match(#2/1/2015#, AR, -1)
  13.     MsgBox I

  14. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 32# GBKEE


    WoW...Cool~

但是我還有一個問題...就是 我是比對日期

比對的數值為
2015/1/1

比對的陣列為
2014/12/31
2015/1/2
2015/1/3
...
..
.

Match後面設定 1 找小於 會找到 2014/12/13

但是我設定 -1 找大於 他出現 "溢位" 而不會找到 2015/1/2 ...

問題出在哪裡?

TOP

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

假設 "數值1" 在 "陣列1" 做Match
比對出來是好幾列,那我要怎麼抓出比對後的列數,在B欄的內容?

請參考 第18樓的程式碼
我是直接改
EE.Activate,激活Sheet去抓取,
EGBT 發表於 2015/9/19 18:50

不需 EE.Activate,EE.Select 移動活頁簿的工作表
  1. With EE
  2.    .Range("A1")="XXX"
  3. End With
  4.   
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 26# GBKEE


    抓取數值

我是直接改

EE.Activate,激活Sheet去抓取,不知道GBKEE大大是否有更活的方法呢?

TOP

        靜思自在 : 【生命在呼吸間】佛陀說:「生命在呼吸間。」人無法管住自己的生命,更無法擋住死期,讓自己永住人間。既然生命去來這麼無常,我們更應該好好地愛惜它、利用它、充實它,讓這無常、寶貴的生命,散發它真善美的光輝,映照出生命真正的價值。
返回列表 上一主題