返回列表 上一主題 發帖

如何從字串中比對後抓出需求的資料

回復 1# lone_tiger0303
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Ar, xA, xF As Range, xS As Integer
  4.     With Sheets("DMS")
  5.         Ar = Application.Transpose(.Range("L1", .[L1].End(xlDown)).Value)
  6.         Ar = Join(Ar, ",")
  7.         Ar = Split(Ar, ",")
  8.         With .Range("IR1")
  9.             .Resize(UBound(Ar)) = Application.Transpose(Ar)
  10.             .Resize(UBound(Ar)).Offset(, 1) = 1
  11.             xA = .Resize(UBound(Ar)).Resize(, 2).Address(, , 0)
  12.             .Offset(, 2).Consolidate xA, xlSum, 0, 1                 '彙算出不重複的名單
  13.             Erase Ar
  14.             For Each xA In .Offset(, 2).Resize(Rows.Count, 1).SpecialCells(xlCellTypeConstants)
  15.                 If xA.Row <> 1 And xA <> "" Then
  16.                     Set xF = Sheets("員工名單").Cells.Find(xA, lookat:=xlWhole)
  17.                     If Not xF Is Nothing Then
  18.                         ReDim Preserve Ar(xS)
  19.                         Ar(xS) = xA
  20.                         xS = xS + 1
  21.                     End If
  22.                 End If
  23.             Next
  24.             .CurrentRegion = ""
  25.         End With
  26.         If xS > 0 Then
  27.             .Range("AI2:AI" & Rows.Count) = ""
  28.             .Range("AI2").Resize(xS).Value = Application.Transpose(Ar)
  29.         End If
  30.    End With
  31. End Sub
複製代碼

TOP

回復 5# lone_tiger0303
一對一~~重複的名單不用刪除,且不用往上移
做個範例說明一下

TOP

回復 7# lone_tiger0303
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Ar(), xR As String, xF As Range, xS As Integer
  4.     With Sheets("DMS")
  5.         Ar = .Range("L2", .[L2].End(xlDown)).Value
  6.         For xS = 1 To UBound(Ar)
  7.             xR = Split(Ar(xS, 1), ",")(0)
  8.             Set xF = Sheets("員工名單").Cells.Find(xR, lookat:=xlWhole)
  9.             If Not xF Is Nothing Then
  10.                 Ar(xS, 1) = xF
  11.             Else
  12.                 Ar(xS, 1) = ""
  13.             End If
  14.         Next
  15.         .Range("AI2:AI" & Rows.Count) = ""
  16.         .[AI2].Resize(UBound(Ar)) = Ar
  17.    End With
  18. End Sub
複製代碼

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題