不用迴圈,不用Worksheet函數(match等),判斷某element在是否陣列中
- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
不用迴圈,不用Worksheet函數(match等),判斷某element在是否陣列中
例如- Sub ss_test1()
- alltype = Array("A類", "B類", "C類", "D類", "E類", "F類", "G類", "H類", "I類", "J類")
- aj = "1D類"
- If UBound(Filter(alltype, aj)) < 0 Then Debug.Print "Empty"
- Stop
- End Sub
複製代碼 |
|
|
ss
|
|
|
|
|
- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
回復 1# sunnyso
判斷該element在陣列中位置
Debug.Print UBound(Split(Split(Join(alltype, "|"), aj)(0), "|")) + 1- If UBound(Filter(alltype, aj)) < 0 Then
- Debug.Print "Empty"
- Else
- Debug.Print UBound(Split(Split(Join(alltype, "|"), aj)(0), "|")) + 1
- End If
複製代碼 |
|
|
ss
|
|
|
|
|
- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
回復 sunnyso
判斷該element在陣列中位置
Debug.Print UBound(Split(Split(Join(alltype, "|"), aj)( ...
sunnyso 發表於 2013-6-30 23:11 
樓上有bug,改爲- If UBound(Filter(alltype, aj)) < 0 Then
- Debug.Print "Empty"
- Else
- Debug.Print UBound(Split(Split(“ ” & Join(alltype, "|"), aj)(0), "|"))
- End If
複製代碼 |
|
|
ss
|
|
|
|
|
- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
本帖最後由 sunnyso 於 2013-7-1 09:41 編輯
回復 4# GBKEE
版大你的code有bug,跟我第一次的code(2樓)一樣的bug。就是第一element(即: "A類") 回傳 -1
應該像我3樓的改動(或者看我另一帖子)才可以,在Join 後的 AllType前面加上一個任意非 S(輔助字串)的字串,例如“<space>", 不然第一個emement會回傳-1, 還有在Join 後的 AllType後面並不需要串輔助字串
改動後如下- Sub ss_teswt()
- alltype = Array("A類", "B類", "C類", "D類", "E類", "F類", "G類", "H類", "I類", "J類")
- Aj = "J類"
- If UBound(Filter(alltype, Aj)) < 0 Then
- Debug.Print "Empty"
- Else
- Debug.Print UBound(Split(Split(" " & Join(alltype, "|"), Aj)(0), "|"))
- End If
- 'Stop
- End Sub
複製代碼 |
|
|
ss
|
|
|
|
|
- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
回復 6# GBKEE
的確,再想想有沒有更好的方法 |
|
|
ss
|
|
|
|
|
- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
回復 4# GBKEE
這樣可以少一IF判斷- Sub Ex()
- Dim S As String, alltype(), Aj As String, Ar As String
- S = "," '輔助字串
- alltype = Array("DA類", "B類", "DEC類", "EC類", "C類", "F類", "G類", "H類", "I類", "J類")
- Aj = S & "DA類" & S
- Ar = " " & S & Join(alltype, S)
- If InStr(Ar, Aj) = 0 Then
- Debug.Print "Empty"
- Else
- Ar = Split(Ar, Aj)(0)
- Debug.Print UBound(Split(Ar, S))
- End If
- End Sub
複製代碼 |
-
1
評分人數
-
|
|
ss
|
|
|
|
|
- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
回復 9# GBKEE
6樓的code適合以關鍵字來判斷element的位置 |
|
|
ss
|
|
|
|
|