文字列配列が1次元であると仮定すると、このようなものがありますか? Application.Match
あなたの文字列マッチング要件に応じて
Sub ArraySlicing()
Dim Xarray() As String
Dim Aarray() As String, Barray() As String, Carray() As String
Dim XA() As String, XB() As String, XC() As String
Dim XA_RwIndexList As String, XB_RwIndexList As String, XC_RwIndexlist As String
Dim i As Long
'create test data arrays
Xarray = Split("Red,Blue,Green,Yellow,Orange,Lime,Purple,Turquoise,Pink,Brown,White,Black,Gold", ",")
Aarray = Split("Apple,Orange,Banana,Lime,Pear,Orange,Green Apple,Red Apple", ",")
Barray = Split("Pink Rose,Tulip,Daisy,Bluebell,Carnation,Marigold", ",")
Carray = Split("redwood,spruce,lime,pine,oak,lemon,chestnut,walnut,orange", ",")
'loop XArray and check for matches
For i = LBound(Xarray) To UBound(Xarray)
'note application.match is case insensitive and will only match complete words
'i.e. "orange" & "Orange" will be found, "Pink Rose" will not
If Not IsError(Application.Match(Xarray(i), Aarray, 0)) Then _
XA_RwIndexList = XA_RwIndexList & "_" & i 'index matching rows
If Not IsError(Application.Match(Xarray(i), Barray, 0)) Then _
XB_RwIndexList = XB_RwIndexList & "_" & i 'index matching rows
If Not IsError(Application.Match(Xarray(i), Carray, 0)) Then _
XC_RwIndexlist = XC_RwIndexlist & "_" & i 'index matching rows
Next i
'check if XA_RwIndexList was initialized i.e. there were matches
If Not XA_RwIndexList = vbNullString Then
'trim preceeding "_" & store row #s in XA array
XA = Split(Mid(XA_RwIndexList, 2), "_")
'loop XA and replace row # with corresponding values from XArray
For i = LBound(XA) To UBound(XA)
XA(i) = Xarray(XA(i))
Next i
End If
'check if XB_RwIndexList was initialized i.e. there were matches
If Not XB_RwIndexList = vbNullString Then
'trim preceeding "_" & store row #s in XB array
XB = Split(Mid(XB_RwIndexList, 2), "_")
'loop XB and replace row # with corresponding values from XArray
For i = LBound(XB) To UBound(XB)
XB(i) = Xarray(XB(i))
Next i
End If
'check if XC_RwIndexList was initialized i.e. there were matches
If Not XC_RwIndexlist = vbNullString Then
'trim preceeding "_" & store row #s in XC array
XC = Split(Mid(XC_RwIndexlist, 2), "_")
'loop XC and replace row # with corresponding values from XArray
For i = LBound(XC) To UBound(XC)
XC(i) = Xarray(XC(i))
Next i
End If
End Sub
はベストフィットすることが、それはループ、他の3つの配列をもする必要がないようにする良い方法だと私はそれをお勧めしたいと思ったことがありません。
あなたの問題を解決しようとする試みがありますか?あなたが噛むものを私たちに与えるなら、はるかに助けになるでしょう。 –
Romcel、私はXarrayをループし、それぞれのマスター配列とマッチングすることを検討しましたが、セットや行列や配列に適用できる "ismember"の行について何かを期待していました。私はVBAに堪能ではなく、試行錯誤、助けを読むこと、ウェブを精査することなどで苦労します。私はプログラマーやIT担当者ではないことに注意してください。このタイプのコードを使用することは中心的ではありません私の仕事に。場合によっては、カスタムコードを書いただけでは、いくつかの反復的な側面に対処しやすくなります。私の心は今やさまざまな枠組みの中で何ができるのか分かりません。 – Jabberwocky