"Vlookup" and "Match" in VBA
- 帖子
- 65
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- Window 7
- 軟體版本
- 2007
- 閱讀權限
- 20
- 註冊時間
- 2010-5-4
- 最後登錄
- 2012-5-21
|
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
12#
發表於 2011-6-23 13:42
| 只看該作者
本帖最後由 GBKEE 於 2011-6-23 13:46 編輯
回復 8# am0251
Sub test()
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim ItemName As String
z = 2
Do While Range("A" & z).Value <> ""
'ItemNam = Worksheets("Sheets1").Range("A" & z).Value '你的附檔中沒有Sheets1工作表
'x = Evaluate("MATCH(""ItemNam"",Sheet(Sheets2)!A:A,0)") 你的附檔中沒有Sheets2工作表
'x = Application.WorksheetFunction.Match(Worksheets("Sheets1").Range("A" & z).Value, Sheets("Sheets2").Range("A:A")) '如上的錯誤
ItemNam = Worksheets("Sheet1").Range("A" & z).Value
x = Evaluate("MATCH(""" & ItemNam & """,Sheet2!A:A,0)") 'ItemNam是變數要用&來連接
x = Application.WorksheetFunction.Match(Worksheets("Sheet1").Range("A" & z).Value, Sheets("Sheet2").Range("A:A"))
Debug.Print x, y
z = z + 1
Loop
End Sub |
|
|
|
|
|
|
- 帖子
- 65
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- Window 7
- 軟體版本
- 2007
- 閱讀權限
- 20
- 註冊時間
- 2010-5-4
- 最後登錄
- 2012-5-21
|
13#
發表於 2011-6-23 13:57
| 只看該作者
本帖最後由 am0251 於 2011-6-23 15:03 編輯
如果我想把變數"y"的值等於,我的UserFrom 內的 Calendar 的值,可是我寫了"y = Calendar1.Value"出來的結果是"1/六月/2011 ",我的屬性已經改"英文(簡短)"的了,要在哪裡可以改成"1-Jun-11"呢?
因為我要把"x" "y"變成Cells(x,y)的痤標,"x"就是ItemName,"y"就是日期,如B2="1-Jun-11"; C2="2-Jun-11"............有可能做的到嗎? |
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|
- 帖子
- 1572
- 主題
- 16
- 精華
- 2
- 積分
- 1521
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 150
- 性別
- 男
- 註冊時間
- 2010-5-1
- 最後登錄
- 2016-1-13

|
14#
發表於 2011-6-23 15:47
| 只看該作者
y = Format(Calendar1.Value, "d-mmm-yy")
MsgBox y |
|
|
|
|
|
|
- 帖子
- 65
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- Window 7
- 軟體版本
- 2007
- 閱讀權限
- 20
- 註冊時間
- 2010-5-4
- 最後登錄
- 2012-5-21
|
15#
發表於 2011-6-23 16:52
| 只看該作者
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|
- 帖子
- 1572
- 主題
- 16
- 精華
- 2
- 積分
- 1521
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 150
- 性別
- 男
- 註冊時間
- 2010-5-1
- 最後登錄
- 2016-1-13

|
16#
發表於 2011-6-23 20:26
| 只看該作者
Cells(x, y)裡面的x,y都必須是數字
不能是日期。 |
|
|
|
|
|
|
- 帖子
- 65
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- Window 7
- 軟體版本
- 2007
- 閱讀權限
- 20
- 註冊時間
- 2010-5-4
- 最後登錄
- 2012-5-21
|
17#
發表於 2011-6-24 14:26
| 只看該作者
本帖最後由 am0251 於 2011-6-24 15:36 編輯
謝謝指點,已改好了,可是.......還是不行.........
Book1.rar (23.12 KB)
|
-
-
Book1.rar
(23.12 KB)
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|
- 帖子
- 76
- 主題
- 19
- 精華
- 0
- 積分
- 145
- 點名
- 0
- 作業系統
- win xp
- 軟體版本
- OFFICE 2003
- 閱讀權限
- 20
- 註冊時間
- 2010-5-24
- 最後登錄
- 2014-6-24
|
18#
發表於 2011-6-25 10:52
| 只看該作者
剛好有利用到~~感謝oobird
Private Sub CommandButton1_Click()
Dim x As Integer, y As Integer, z As Integer, ItemName As String
z = 6
Do While Range("N" & z).Value <> ""
ItemNam = Sheet3.Range("N" & z).Value
Sheet3.Range("S" & z).Value = Application.VLookup(ItemNam, Sheet4.[A1:B29], 2, 0)
z = z + 1
Loop
End Sub |
|
|
|
|
|
|
- 帖子
- 65
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- Window 7
- 軟體版本
- 2007
- 閱讀權限
- 20
- 註冊時間
- 2010-5-4
- 最後登錄
- 2012-5-21
|
19#
發表於 2011-6-25 14:32
| 只看該作者
本帖最後由 am0251 於 2011-6-25 14:39 編輯
不好意思,小的沒看懂....這是我的程序- Private Sub Start_Click()
- Dim x As Integer, y As Integer, z As Integer, S1 As Integer, S2 As Integer, myRowCount As Integer
- Dim ShipDate As Date
- Dim ItemName As String
- z = 2
- myRowCount = Range("A1").CurrentRegion.Rows.Count
- ItemName = Worksheets("Sheet1").Range("A" & z).Value
- ShipDate = Format(Calendar1.Value, "d-mmm-yy")
- For i = 2 To myRowCount
- x = Application.Match(ItemName, Sheet2.["A1", "A" & myRowCount], 0)
- y = Application.Match(ShipDate, Sheet2.[B1:AF1], 0)
- S1 = Workbooks("Book1").Worksheets("Sheet1").Cells(z, 2).Value
- S2 = Workbooks("Book1").Worksheets("Sheet2").Cells(x, y).Value
- S2 = S2 + S1
- z = z + 1
- Next i
- Unload Me
- MsgBox "Done"
- End Sub
複製代碼 |
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|