返回列表 上一主題 發帖

[發問] 從儲存格左邊開始搜尋字串

同一格〔同時〕含有〔多個〕關鍵字, 如何取? 以何為優先? 或全取出?

TOP

G1:G4
cotton
polyester
leather
polyurethane


B1.陣列公式:右拉四格,下拉(依出現次序顯示)
=INDEX($G:$G,RIGHT(SMALL(IF(1-ISERR(FIND($G$1:$G$4,$A1)),FIND($G$1:$G$4,$A1)*10^5+ROW($1:$4),10^9+4^8),COLUMN(A$1)),5))&""


<陣列公式>輸入法:
輸入或修改公式完成後,游標留在〔編輯列〕,先不要按Enter,
同時按住〔Shift + Ctrl〕不放,再按〔Enter〕。

TOP

回復 11# show780106


G2.陣列公式:
=INDEX(材質!$D:$D,RIGHT(SMALL(IF(1-ISERR(0/(FIND(材質!$D$1:$D$20,"|"&$D2)>1)),FIND(材質!$D$1:$D$20,$D2)*10^5+ROW($D$1:$D$20),10^9+4^8),COLUMN(A$1)),5))&""

參考附檔:
Xl0000191.rar (81.27 KB)

TOP

回復 11# show780106

Sub TEST()
Dim xArea As Range, Arr, Brr, N&, i&, TR, T, TT$, xClmn As Range, xR As Range
Application.ScreenUpdating = False
[D:D].Copy [G:G]
Set xArea = Range([G2], [G65536].End(xlUp))
Set xClmn = Range([材質!D2], [材質!D65536].End(xlUp))
For Each xR In xClmn
  If xR <> "" Then xArea.Replace xR, "_||" & xR & "_", Lookat:=xlPart
Next
 
Arr = xArea.Value
ReDim Brr(1 To UBound(Arr), 1 To xClmn.Count)
For i = 1 To UBound(Arr)
  TR = Split(Arr(i, 1), "_"):   N = 0:   TT = ""
  For Each T In TR
    If Left(T, 2) = "||" And InStr(TT, T) = 0 Then
     TT = TT & T:   N = N + 1:   Brr(i, N) = Mid(T, 3)
    End If
  Next
Next i
 
With [G2].Resize(UBound(Arr), xClmn.Count)
   .Value = Brr
   .Columns.AutoFit
End With
Beep
End Sub

參考附檔:
Xl0000191-v01.rar (28.58 KB)

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題