返回列表 上一主題 發帖

[發問] VBA 複製data問題(跨Sheet)

最後一個版本,以K欄去控制取5格或2格或排除不取:
IPQC-FQC-3.rar (238.5 KB)

TOP

回復 21# dea172


不是欄位都是固定的???
實在沒時間再去修改程式,
等其他版主來幫忙吧!

TOP

回復 18# 准提部林

版主你好,
測試後, 可以跳過指定欄位, FQC M 欄位 跑到後面了, 附上圖片與程式碼


Sample.zip (52.8 KB)

TOP

為了防呆,在程式碼的前端再加這三行:
If IsDate([C1]) = False Then MsgBox "日期格式錯誤或未輸入!!": Exit Sub
If [E1] = "" Then MsgBox "Machine No 未輸入!!": Exit Sub
If [G1] Like "########-####" = False Then MsgBox "Lot No 錯誤或未輸入!!": Exit Sub

TOP

本帖最後由 准提部林 於 2018-4-19 16:45 編輯

回復 17# dea172

若是要排除多個:
If InStr("-A2-H-P-", "-" & Trim(Arr(i + 1, 1)) & "-") Then

A2,H,P 都不錄入

因為檔案中A2後多了一個空格, 須用Trim清除

記住:這個排除要放在IF條件的第一個,其它再用ELSEIF接其它條件

TOP

回復 17# dea172

For i = 0 To UBound(Arr) - 1
    If Arr(i + 1, 1) = "P" Then
       '這裡空白即可(不做任何動作)
    ElseIf Arr(i + 1, 1) = "M" Then
       For j = 5 To 6: Brr(1, i * 3 + j) = Arr(i + 1, j + 1): Next j '只抓前2格
     Else
       For j = 5 To 7: Brr(1, i * 3 + j) = Arr(i + 1, j + 1): Next j '抓前3格
           For j = 5 To 6: Brr(2, i * 3 + j) = Arr(i + 1, j + 4): Next j '抓後2格
    End If
Next i

TOP

回復 16# 准提部林

版主你好,
測試後OK, 不好意思, 但我還有一個問題想請教, 再次麻煩了, 謝謝
若想跳過 IPQC檔案的 P 欄位, 複製時不將P欄位複製到FQC內, 是否有程式可使用?

TOP

本帖最後由 准提部林 於 2018-4-19 16:10 編輯

回復 15# dea172


IPQC-FQC.rar (167 KB)


這個FQC檔名自動與IPQC匹配:
IPQC-FQC-2.rar (168.17 KB)

TOP

回復 14# Hsieh

版主你好,
感謝幫忙, 我有試過,
1.沒有重複批號確認,
2.每傳一次資料, 使用者還需要開啟IPQC 檔案, 是否有更方便方式, 謝謝!
註: IPQC & FQC 檔案都是放同一資料夾下

TOP

回復 13# dea172
  1. Sub FQC_IPQC()
  2. Dim Ay(0 To 1), A As Range, C As Range, y&, d#, m&, i!, Lot1$, Lot2, f, fd$, fs$, fc$
  3. Do
  4. fd = Application.GetOpenFilename("Excel Files (*.xls),*.xls", , "請選擇IPQC檔", , False)
  5. f = Split(fd, "\")
  6. fs = f(UBound(f))
  7. If InStr(fs, "IPQC") = 0 Then MsgBox "檔案選取不是IPQC檔" & Chr(10) & "請重新選擇"
  8. Loop While InStr(fs, "IPQC") = 0
  9. fc = Replace(fd, "IPQC.xls", "FQC.xls")
  10. With Workbooks.Open(fc)
  11. With Workbooks.Open(fd)
  12.    With .Sheets("Transfer")
  13.       Lot1 = Split(.[G2], "-")(0) & "-FQC3"
  14.       Lot2 = Split(.[G2], "-")(0) & "-FQC2"
  15.       y = Year(.[C1])
  16.       d = CDate(Format(.[C1], "m/d"))
  17.       m = .[L4]
  18.       Ay(0) = Array(Lot1, y, d, m)
  19.       Ay(1) = Array(Lot2, y, d, m)
  20.       Dim ar(0 To 1, 0 To 34)
  21.       For Each A In .[F4:F15]
  22.         For i = 0 To 2
  23.             ar(0, s) = A.Offset(, i).Value
  24.             ar(1, s) = A.Offset(, i + 3).Value
  25.             s = s + 1
  26.             If s = 35 Then GoTo 10
  27.         Next
  28.       Next
  29. 10
  30.     End With
  31.     .Close 0
  32. End With
  33. With .Sheets("Input")
  34.   Set C = .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
  35.   C.Resize(2, 4) = Application.Transpose(Application.Transpose(Ay))
  36.   C.Offset(, 4).Resize(2, 35) = ar
  37. End With
  38. End With
  39. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題