Board logo

標題: [發問] 重複資料,如何使用VBA方式,指定特定字串製作成清單(已解決) [打印本頁]

作者: totes    時間: 2011-12-18 12:13     標題: 重複資料,如何使用VBA方式,指定特定字串製作成清單(已解決)

本帖最後由 totes 於 2011-12-18 20:56 編輯

需求為使用VBA方式,將DPARTNO欄位,指定TC字串開頭項目,製作成清單方式
1.結果如G6~G9範例 (只需TC開頭項目)
2.最終需求如G11自作成下拉選單

因另有其他用途,除樞紐分析以外,以上敘述有沒有辦法用VBA方式表達(第1點即可)
感謝了
[attach]8831[/attach]
作者: register313    時間: 2011-12-18 13:33

回復 1# totes
   初學者VBA
  1. Sub xx()

  2.     Range("G:G") = ""
  3.     I = 2
  4.     X = 1
  5.     Do While Cells(I, 5) <> ""
  6.        If (Cells(I, 5) Like "TC*") And (Range("G:G").Find(WHAT:=Cells(I, 5)) Is Nothing) Then
  7.           Cells(X, 7) = Cells(I, 5)
  8.           X = X + 1
  9.        End If
  10.        I = I + 1
  11.     Loop
  12.     End Sub
複製代碼
[attach]8832[/attach]
作者: totes    時間: 2011-12-18 16:20

可以使用,真的感謝萬分^ ^
作者: GBKEE    時間: 2011-12-18 18:35

回復 1# totes
  1. Option Explicit
  2. Sub Ex()
  3.     Dim S As String, I As Integer, W As String
  4.     S = ""
  5.     I = 2
  6.     [G:G] = ""
  7.     Do While Cells(I, 5) <> ""
  8.         W = Trim(Cells(I, 5))
  9.        If W Like "TC*" And InStr(S, W & ",") = 0 Then
  10.           S = S & W & ","
  11.        End If
  12.        I = I + 1
  13.     Loop
  14.     If S <> "" Then
  15.         S = Mid(S, 1, Len(S) - 1)
  16.         '1.結果如G6~G9範例 (只需TC開頭項目)
  17.         [G1].Resize(UBound(Split(S, ",")) + 1) = Application.Transpose(Split(S, ","))
  18.         
  19.         '2.最終需求如G11自作成下拉選單
  20.         With [G11].Validation
  21.             .Delete
  22.             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  23.             xlBetween, Formula1:=S
  24.         End With
  25.     End If
  26. End Sub
複製代碼

作者: totes    時間: 2011-12-18 19:06

感謝版主,連下拉選單都有了,厲害!
作者: Hsieh    時間: 2011-12-18 22:52

回復 5# totes
不須使用範圍作清單
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. C = InputBox("輸入開頭字元", , "TC")
  4. ar = Range("E2", [E65536].End(xlUp)).Value
  5. For Each a In ar
  6.   If a Like C & "*" Then d(a) = ""  '不重複符合規則
  7. Next
  8. If d.Count = 0 Then MsgBox "無符合資料": Exit Sub
  9. With Range("G11").Validation
  10. .Delete
  11. .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  12.         xlBetween, Formula1:=Join(d.keys, ",")
  13.         .IgnoreBlank = True
  14.         .InCellDropdown = True
  15.         .InputTitle = ""
  16.         .ErrorTitle = ""
  17.         .InputMessage = ""
  18.         .ErrorMessage = ""
  19.         .IMEMode = xlIMEModeNoControl
  20.         .ShowInput = True
  21.         .ShowError = True
  22. End With
  23. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)