返回列表 上一主題 發帖

請高手幫忙,求助VBA包含套用及飾選等指令

本帖最後由 准提部林 於 2016-4-2 11:13 編輯

第5點需求不太清楚,先試看看:
  1. Sub 載入()
  2. Dim Arr, xB As Workbook, BKN, i&, N&, xD, U
  3. Call 清除
  4. Set xD = CreateObject("Scripting.Dictionary") '字典檔
  5. Application.ScreenUpdating = False

  6. Set xB = Workbooks.Open(ThisWorkbook.Path & "\Christy珠寶更新.xls", ReadOnly:=True) '唯讀開啟檔案
  7. Arr = Range(xB.Sheets(1).[C1], xB.Sheets(1).Cells(Rows.Count, 2).End(xlUp)) '將資料範圍納入陣列
  8. xB.Close 0 '關閉檔案
  9. For i = 2 To UBound(Arr)
  10.     If Left(Arr(i, 1), 2) = "FJ" Or Left(Arr(i, 1), 1) = "W" Then '檢查編號首2或1英文碼
  11.        N = N + 1 '符合者累加1
  12.        Arr(N, 1) = Left(Arr(i, 1), 6) & "-" & Right(Arr(i, 1), 3) '寫入編號
  13.        Arr(N, 2) = Arr(i, 2) '寫入數量
  14.        xD(Arr(N, 1)) = Arr(N, 2) '以編號為key,將數量納入字典檔
  15.     End If
  16. Next i
  17. If N > 0 Then Cells(Rows.Count, "H").End(xlUp)(2).Resize(N, 2) = Arr '載入陣列內容


  18. For Each BKN In Array("F珠寶上落牌", "W珠寶上落牌") '逐一開啟兩個檔案
  19.     Set xB = Workbooks.Open(ThisWorkbook.Path & "\" & BKN & ".xls", ReadOnly:=True) '唯讀開啟檔案
  20.     Arr = xB.Sheets(1).UsedRange '將資料範圍納入陣列
  21.     xB.Close 0 '關閉檔案
  22.     N = 0 '計數器歸0
  23.     For i = 2 To UBound(Arr)
  24.         If Left(Arr(i, 5), 2) = "FJ" Or Left(Arr(i, 5), 1) = "W" Then '檢查編號首2或1英文碼
  25.            N = N + 1 '符合者累加1
  26.            Arr(N, 1) = Left(Arr(i, 5), 6) & "-" & Right(Arr(i, 5), 3) '寫入編號
  27.            Arr(N, 2) = Arr(i, 12) '寫入[是/否]
  28.            Arr(N, 3) = Val(xD(Arr(N, 1))) '寫入數量(從字典檔中取出)
  29.            '↓上/下牌檢查
  30.            Arr(N, 4) = ""
  31.            If Arr(N, 2) = "否" And Arr(N, 3) > 0 Then Arr(N, 4) = "▲上牌": U = U + 1
  32.            If Arr(N, 2) = "是" And Arr(N, 3) = 0 Then Arr(N, 4) = "▼下牌": U = U + 1
  33.         End If
  34.     Next i
  35.     If N > 0 Then Cells(Rows.Count, "C").End(xlUp)(2).Resize(N, 4) = Arr '載入陣列內容
  36. Next

  37. Application.ScreenUpdating = True
  38. If U > 0 Then MsgBox "共有 " & U & " 個項目須處理! "
  39. End Sub

  40. Sub 清除()
  41. With ActiveSheet
  42.     If .FilterMode Then .ShowAllData
  43.     .UsedRange.Offset(1, 0).EntireRow.Delete
  44.     .[A2].Select
  45. End With
  46. End Sub
複製代碼
 
 
參考檔案:XLS格式,請自行去套
FW珠寶上落牌一鍵.rar (72.71 KB)
 
另一載點:
http://www.funp.net/918457
 
 

TOP

回復 3# tc1701


如超版所言, 一切需要時間
--- 必須真正有心花時間去找資料, 買書, 看excel內建說明檔,
還沒有vba基本認識, 說太多也是沒多大用處, 霧裡看花,
就像外國人未學拼音或注音, 很難跟他解釋語文, 每一句都如文言文的難懂,
有了基礎, 那我所寫的程式, 看起來就是白話文, 一個說明都不用!!!

TOP

        靜思自在 : 能幹不幹,不如苦幹實幹。
返回列表 上一主題