Board logo

標題: 請問混合編碼我應該怎麼做 [打印本頁]

作者: sheau-lan    時間: 2015-9-18 10:03     標題: 請問混合編碼我應該怎麼做

麻煩各位功力強大的大大幫忙:'(
作者: stillfish00    時間: 2015-9-18 15:21

回復 1# sheau-lan
品號只會新增還是會去修改之前的??
例如: 如果修改[A6]儲存格為M4-xxx規格的品號 , 下方的存放編號要全部更新嗎??

如果不用管,可參考下面;如果要,不如建個按鈕更新全部存放編號比較適用。
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim ar, spec, prefix, count As Long
  3.     With Target
  4.         If .Row >= 3 And .Column = 1 Then
  5.             '其它欄處理略過, 假設D欄已取得規格
  6.             '.........
  7.             spec = Cells(.Row, "D").Value
  8.             prefix = Split(spec, "-")(0)
  9.             ar = Range(Cells(1, "H"), Cells(.Row - 1, "H"))
  10.             For Each x In ar
  11.                 If prefix = Split(x, "-")(0) Then
  12.                     count = count + 1
  13.                 End If
  14.             Next
  15.             Application.EnableEvents = False
  16.             Cells(.Row, "H").Value = prefix & "-" & Replace(Cells(1, count / 4 + 1).Address(False, False), "1", "")
  17.             Application.EnableEvents = True
  18.         End If
  19.     End With
  20. End Sub
複製代碼

作者: 准提部林    時間: 2015-9-18 16:03

若資料不多可參考公式:
=IF(D3="","",LEFT(D3,FIND("-",D3))&CHAR(64+INT(COUNTIF(D$2:D2,LEFT(D3,FIND("-",D3))&"*")/4)+1))
作者: sheau-lan    時間: 2015-9-18 17:15

stillfish00 大大
可以用了,MM規格基本上沒問題
但英制規格3/8,1/4,#8
這些規格都不行捏
作者: GBKEE    時間: 2015-9-19 08:03

回復 4# sheau-lan
D欄 規格有變動, H欄 規格-A  輸入 外盒標籤
  1. Option Explicit
  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3.     Dim W As Variant, Ar As Variant, i As Integer
  4.     With Target.Cells(1)
  5.         W = Split(.Cells, "-")
  6.         If .Column = 4 And UBound(W) >= -1 Then
  7.             Application.EnableEvents = False
  8.             Ar = Application.Transpose(Range("H3", Range("H" & Rows.Count).End(xlUp)))
  9.             Ar = Filter(Ar, W(0) & "-")
  10.             i = 65
  11.             Do While UBound(Filter(Ar, W(0) & "-" & Chr(i))) >= 3
  12.                 i = i + 1
  13.             Loop
  14.             .Cells.Offset(, 4) = W(0) & "-" & Chr(i)
  15.             Application.EnableEvents = True
  16.         End If
  17.     End With
  18. End Sub
複製代碼

作者: sheau-lan    時間: 2015-9-21 08:25

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo 99
Dim TG As Range
With Target
If .Row >= 3 And .Column = 1 Then
     If .Value = "" Then
98:      .Offset(0, 2) = ""
         .Offset(0, 3) = ""
         .Offset(0, 4) = ""
         .Offset(0, 5) = ""
         .Offset(0, 6) = ""
         .Offset(0, 7) = ""
         .Offset(0, 8) = ""
         .Offset(0, 9) = ""
         
  Else: Set TG = Sheet7.[H3:H9999].Find("*" & .Value & "*", , , xlWhole)
             If TG Is Nothing Then GoTo 98
                .Offset(0, 9) = TG.Offset(0, -6).Value
               TG2 = .Offset(0, 2).Value
                .Offset(0, 2) = TG.Offset(0, -3).Value
                .Offset(0, 3) = TG.Offset(0, -2).Value
                .Offset(0, 5) = Application.VLookup(TG2, Sheet15.[A4:H9999], 8, False)
                     If IsError(.Offset(0, 5).Value) Then .Offset(0, 5) = ""
                .Offset(0, 6) = TG.Offset(0, 1).Value
大大...可我前面還有這一段
可以加一起嗎?
這一段是抓其他相關資料的
不用再KEY一次
作者: sheau-lan    時間: 2015-9-21 10:17

GBKEE 大大...麻煩請看一下我的留言,我試了好久
都沒辦法加一起
作者: 准提部林    時間: 2015-9-21 15:26

回復 7# sheau-lan


請提供較完整的參考資料及檔案, 並詳細說明操作流程及需求,
而不是只有程式碼, 也許可以從程式碼解讀, 但很花時間也容易誤判!

另.公式可以做到的話, 為何一定要用VBA???
作者: sheau-lan    時間: 2015-9-21 16:59

准提部林 大大...你要求的附檔案說明
作者: 准提部林    時間: 2015-9-21 18:26

回復 9# sheau-lan

1.〔品號〕固定四碼(英數混合〕?都由上而下逐一輸入?
2.有無可能輸入後又更改,造成〔存放編號〕須由上而下再重新編號?

先用公式處理,〔存放編號〕會自動以最新的狀態編碼,看是否如所需,若非得用vba,再說:
[attach]22044[/attach]
作者: sheau-lan    時間: 2015-9-22 08:00

有可能會手動改到存放區,如果樣品大一點九畢須以人工判斷,放至其他特殊存放區,但不常,
這樣子,下面就不能繼續以編碼原則編號,好像就會跳一號
以M12來講有三筆M12-A會有三次
如第4筆放置特別存放區
第5筆就會跳M12-B
正常應該跳M12-A
作者: 准提部林    時間: 2015-9-22 10:00

回復 11# sheau-lan


所以,才會強調〔操作流程〕∼∼是否如下:
1.當輸入第1筆 M12 時,產生 M12-A ,印好標籤就貼在樣品上面,以後不可能再更改
2.當輸入第2∼3筆時,也是 M12-A,同步驟1
3.當輸入第4筆時,因外型特殊,手動編碼(不知是何種型式,可提供例子嗎?),同樣貼好歸位永不變動
4.當輸入第5筆,因還有一個位置,所以是 M12-A
5.往後陸續增加的相同規格,,則按此規則,依B∼??編碼下去
6.所有上方已輸入者,不可能再變動?例如:已有10筆編好的資料,忽然去更改第7筆?
作者: sheau-lan    時間: 2015-9-22 11:27

本帖最後由 sheau-lan 於 2015-9-22 11:28 編輯

准提部林 大大
編好10筆..當然不會去改第7筆
除非這支樣品交樣過程坎坷,才會獨立出一個專案
上述1-5項是對的M12-A編完跳M12-B以此類推
長度過長跟尺寸過大都會另外放一個較大的存放箱
超過M16長度超過150長包含150長
例如M18x190
        M16x210
這些都會歸到特殊盒子
作者: 准提部林    時間: 2015-9-22 15:29

回復 13# sheau-lan

提供〔公式〕與〔VBA〕兩種:
[attach]22048[/attach]
 
作者: sheau-lan    時間: 2015-9-22 16:33

准提部林 大大是對的
完全正錯...太感謝你了
可是如果我G欄也要抓圖面資料
應該怎麼加
作者: 准提部林    時間: 2015-9-22 16:58

回復 15# sheau-lan


G欄是 TARGET 的 .CELLS(1,7)
xF是找到的儲存格,看要取這格相同列的哪一欄:xF.Cells(1, 左或右位移量)
.Cells(1, 7) = xF(1, ??)
作者: sheau-lan    時間: 2015-9-23 07:45

恩恩...好的...謝謝大大
我會好好延就研究
作者: sheau-lan    時間: 2015-9-30 11:45

准提部林 大大
我發現#的規格
如#6,#10,#8
這種沒辦法跳
輸入到第5筆還是
#6-A
作者: 准提部林    時間: 2015-9-30 12:42

回復 18# sheau-lan

比對改如下:
For Each R In Arr
  If Left(R, N) = TT And Right(R, 1) Like "[A-Z]" Then U = U + 1
Next

忽略了 "#" 在 Like 會視為〔0-9〕,所以無法正確比對!
作者: sheau-lan    時間: 2015-10-1 09:42

可以了...謝謝准提部林 大大




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