Board logo

標題: 請問不知可否寫程式帶出可用機台 [打印本頁]

作者: Qektyyrwp    時間: 2016-4-15 00:54     標題: 請問不知可否寫程式帶出可用機台

將ID輸入後,B16,B17,B18可以自動帶出來,如果無法寫在同一格儲存格,分開也可以。麻煩大大們幫看看。[attach]23850[/attach]
作者: luhpro    時間: 2016-4-16 04:53

回復 1# Qektyyrwp

[attach]23875[/attach]
  1. Sub nn()
  2. Dim lRow&
  3. Dim vD, vTemp

  4. Set vD = CreateObject("Scripting.Dictionary")

  5. lRow = 2
  6. While Cells(lRow, 1) <> ""
  7.    If Left(Cells(lRow, 3), 4) <> "nona" Then ' 可用才加入
  8.      If vD.exists(CStr(Cells(lRow, 1))) Then
  9.        If vD(CStr(Cells(lRow, 1))) = "" Then
  10.          vD(CStr(Cells(lRow, 1))) = Cells(lRow, 2)
  11.        Else
  12.          vD(CStr(Cells(lRow, 1))) = vD(CStr(Cells(lRow, 1))) & "," & Cells(lRow, 2)
  13.        End If
  14.      Else
  15.        vD(CStr(Cells(lRow, 1))) = Cells(lRow, 2)
  16.      End If
  17.    Else
  18.      vD(CStr(Cells(lRow, 1))) = ""
  19.    End If
  20.    lRow = lRow + 1
  21. Wend

  22. [A16:B50].Clear
  23. lRow = 16
  24. For Each vTemp In vD
  25.    Cells(lRow, 1) = vTemp
  26.    If vD(vTemp) <> "" Then
  27.      Cells(lRow, 2) = vD(vTemp)
  28.    Else
  29.      Cells(lRow, 2) = "無"
  30.    End If
  31.    lRow = lRow + 1
  32. Next
  33. End Sub
複製代碼
[attach]23876[/attach]
作者: 准提部林    時間: 2016-4-16 12:17

若是機台不多,可考慮自訂函數,彈性較佳:
Function GET_V(xArea As Range, xA$) As String
Dim Arr, T$, i&
Arr = xArea.Value
For i = 1 To UBound(Arr)
  If Arr(i, 1) = xA And Left(Arr(i, 3), 3) <> "non" Then T = T & "," & Arr(i, 2)
Next i
If T = "" Then GET_V = "無" Else GET_V = Mid(T, 2)
End Function
 
公式用法:
=get_v(A$2:C$12, A16)
=get_v(資料範圍, 查詢ID)

[attach]23880[/attach]
另一載址:http://www.funp.net/731903
作者: Qektyyrwp    時間: 2016-4-17 11:03

回復 3# 准提部林


    謝謝樓上二位,可以用了,感謝
作者: titan0919tw    時間: 2016-6-8 19:41

回復 2# luhpro


    好想要阿~~但怎麼下載不了\




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