[已解決][發問]程式簡化-陣列-VBA ,尋找某元素是否存在陣列中。
- 帖子
- 132
- 主題
- 25
- 精華
- 0
- 積分
- 199
- 點名
- 0
- 作業系統
- window XP
- 軟體版本
- Excel 2010
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣 新竹
- 註冊時間
- 2010-6-1
- 最後登錄
- 2022-7-14
  
|
chin15 謝謝。從你回答的問題,覺得你是強手,已經從小學生轉為中學生了,謝謝。程度本來就不應該是小學生。 |
|
|
|
|
|
|
- 帖子
- 45
- 主題
- 10
- 精華
- 0
- 積分
- 59
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office 2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2014-2-6
- 最後登錄
- 2019-6-22

|
13#
發表於 2016-10-26 23:50
| 只看該作者
回復 5# GBKEE
GBKEE前輩好,冒昧打擾,
感謝提供程式碼,
小弟有試著修改前輩的程式碼,
試圖將儲存格內的值做為元素儲至陣列中,但是會出現錯誤,不知如何解決,
小弟斗膽,是否能夠麻煩前輩指點迷津,十分感謝.
附上檔案及修改自前輩所寫程式碼:- '此程式碼修改自麻辣家族討論區excel高手GBKEE前輩所寫,非我自創.
- '討論區網址:http://forum.twbts.com/index.php
- Sub Ex()
- A = Range("a2:a" & Cells(Rows.Count, 1).End(xlUp).Row)
- b = Range("b2:b" & Cells(Rows.Count, 2).End(xlUp).Row)
- For Each E In A
- M = Application.Match(E, b, 0)
- MsgBox E & IIf(IsNumeric(M), "存在於 ", " 不存在於 ") & Join(b, ",")
- Next
- End Sub
複製代碼
20161026-陣列搜尋特定字串問題.zip (9.06 KB)
|
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
14#
發表於 2016-10-27 04:53
| 只看該作者
回復 13# greetingsfromtw - '討論區網址:http://forum.twbts.com/index.php
- Option Explicit
- Sub Ex()
- Dim M As Variant, A(), B()
- A = Range("a2:a" & Cells(Rows.Count, 1).End(xlUp).Row) '二維陣列
- B = Range("b2:b" & Cells(Rows.Count, 2).End(xlUp).Row) '二維陣列
- B = Application.WorksheetFunction.Transpose(B) '轉至為一維陣列
- For Each E In A
- M = Application.Match(E, B, 0)
- MsgBox E & IIf(IsNumeric(M), "存在於 ", " 不存在於 ") & Join(B, ",")
- 'Join 函數 傳回一個字串,該字串是透過連結某個陣列中的多個子字串而建立的。
- '******** 某個陣列 ,必須是一維陣列********************
- Next
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 45
- 主題
- 10
- 精華
- 0
- 積分
- 59
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office 2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2014-2-6
- 最後登錄
- 2019-6-22

|
15#
發表於 2016-10-27 14:04
| 只看該作者
回復 14# GBKEE
非常感謝GBKEE前輩詳細解說,
原來問題出在一維陣列,小弟再研究看看. |
|
|
|
|
|
|
- 帖子
- 37
- 主題
- 15
- 精華
- 0
- 積分
- 72
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- 0
- 閱讀權限
- 20
- 註冊時間
- 2020-7-23
- 最後登錄
- 2022-5-27
|
16#
發表於 2020-8-12 16:16
| 只看該作者
回復 3# chin15 - a = Array("一", "五", "八")
- b = Array("一", "二", "三", "四", "五", "六")
- For i = 0 To UBound(a)
- If UBound(Filter(b, a(i))) = -1 Then
- MsgBox "不 包含" & a(i)
- Else
- MsgBox "包含" & a(i)
- End If
- Next
複製代碼 請問該怎麼樣做才能進一步顯示A是存在B陣列的第幾個索引值呢?
謝謝 |
|
|
|
|
|
|
- 帖子
- 254
- 主題
- 6
- 精華
- 0
- 積分
- 310
- 點名
- 0
- 作業系統
- W10
- 軟體版本
- Excel 2016
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2019-6-16
- 最後登錄
- 2024-9-23
|
17#
發表於 2020-8-12 20:00
| 只看該作者
本帖最後由 軒云熊 於 2020-8-12 20:10 編輯
這樣好像也可以- Sub 練習顯示陣列位置()
- Dim A, B, i, k
- A = Array("一", "五", "八")
- B = Array("一", "二", "三", "四", "五", "六")
-
- For i = 0 To UBound(B)
- If A(k) = B(i) Then
- MsgBox " A的 " & A(k) & " 在 B 的 第 " & i & " 個"
- If k <= UBound(A) Then k = k + 1
- Else
- MsgBox " B 的 第 " & i & " 個" & " 是 " & B(i)
- End If
- Next i
-
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 2843
- 主題
- 10
- 精華
- 0
- 積分
- 2899
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2025-5-31
|
18#
發表於 2020-8-13 10:16
| 只看該作者
回復 16# ssooi
可以使用 APPLICATION.MATCH
陣列數量大 字典--ITEM記錄位置 |
|
|
|
|
|
|