返回列表 上一主題 發帖

[發問] vlookup合并的資料

回復 21# Andy2483


    我把中文變成英文,但是運行VBA沒有什麽效果出來。可以幫我看看哪�娷衝馭糷F嗎?

SR1.rar (156.94 KB)

TOP

本帖最後由 Andy2483 於 2023-12-30 14:53 編輯

回復 20# 198188
謝謝前輩再回復新範例,以下是學習的方案,請前輩參考
Option Explicit
Sub TEST()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim Brr, Crr, Ar, Arr, V, Z, A, i&, R&, C%, j%, T$, K$, Qs$, Qd$, No$, Mk$, Q$
For i = Worksheets.Count To 3 Step -1: Worksheets(i).Delete: Next
Set Z = CreateObject("Scripting.Dictionary")
Brr = Union(Sheets(1).UsedRange, Sheets(1).UsedRange.Offset(1))
Crr = Range(Sheets(2).[A1], Sheets(2).UsedRange): K = [B1]
For i = 1 To UBound(Brr) - 1
   If InStr(Brr(i, 1), Left(K, 4)) = 0 Then GoTo i01
   A = Split(Replace(Brr(i, 1), "  ", " "), " "): Q = Left(A(0), 8): Qd = A(1)
   If UBound(A) > 1 Then Qs = A(UBound(A)) Else Qs = ""
   A = Z(Q): R = Z(Q & "/r"): C = 1
   If Not IsArray(A) Then A = Crr: A(3, 2) = Q: A(3, 6) = Qs: A(3, 9) = Qd: A(4, 13) = Date: R = 5
   R = R + 1: V = A(R, 2)
   If InStr(Brr(i, 2), V) = 0 Or R = 10 Then GoTo i01
   For j = 2 To UBound(Brr, 2)
      C = C + 2: T = Trim(Brr(i, j)): If T = "" Then GoTo j01
      If InStr(T, V) Then
         A(R, C) = Mid(T, 4, 6): A(R, C + 1) = Replace(Mid(T, 11), ")", "")
         Else
         Ar = Split(T, Chr(10))
         For Each Arr In Ar
            If Not Split(Arr & " ", " ")(1) Like "[A-z][A-z]" Then GoTo j01
            No = No & Chr(10) & Split(Arr, " ")(0)
            Mk = Mk & Chr(10) & Mid(Arr, InStr(Arr, Split(Arr, " ")(1)))
         Next
         A(R, C) = Mid(No, 2): A(R, C + 1) = Mid(Mk, 2): No = "": Mk = ""
      End If
j01: Next
   Z(Q) = A: Z(Q & "/r") = R
i01: Brr(i + 1, 1) = IIf(Brr(i + 1, 1) = "", Brr(i, 1), Brr(i + 1, 1))
Next
If Z.Count = 0 Then Exit Sub
For Each A In Z.KEYS
   If Not IsArray(Z(A)) Then GoTo A01
   With Sheets(2).Copy(after:=Worksheets(Sheets.Count))
      ActiveSheet.Name = "Result " & A
      [A1].Resize(UBound(Z(A)), UBound(Z(A), 2)) = Z(A)
   End With
A01: Next
Application.Goto Sheets(1).[A1]
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 198188 於 2023-12-30 09:07 編輯

更新版.rar (50.59 KB) 回復 18# Andy2483

我想了一個規則:
首先BF sheet 是讀取的資料,Demo 是一個固定的模板。
1. 根據BF 的 A 欄的數據,�堶捲{在有#001 - #009 ,那麽就複製9個Demo, Sheet Name 按照#001-#009 來命名。 如 “ Result BF 工程#001”,“ Result BF 工程#002”,“ Result BF 工程#003”如此類推。
2. 讀取BF �堶惇衈釭爾禤い魽A“ Result BF 工程#001”,“ Result BF 工程#002”,“ Result BF 工程#003”等sheet
貨櫃號:BF工程#001, BF工程#002, BF工程#003, BF工程#004 。。。
貨櫃尺寸:45HC, 40HC, 20GP 根據A欄資料來讀取
出貨日期:根據A欄資料來讀取
制表日:執行VBA當天
欄C - 欄D 抽取欄B �堶悸爾禤�
欄E -  欄F  抽取欄C �堶悸爾禤�
欄G - 欄H 抽取欄D �堶悸爾禤�
欄 I -  欄 J  抽取欄E �堶悸爾禤�
欄K -  欄L  抽取欄F �堶悸爾禤�

TOP

本帖最後由 198188 於 2023-12-29 16:43 編輯

[attach]37201[/attach]
回復  198188

1.45HQ = 45'高櫃, 沒有 45HQ的櫃 也標 45'高櫃 這樣沒有規則

2.[E31],[E45],[E59]=4 ...
Andy2483 發表於 2023-12-29 16:16


上面的資料不需要,只是想圖一�堛爾禤げリJ圖二�堛漯礄�内

1.jpg (59.75 KB)

1.jpg

2.jpg (75.88 KB)

2.jpg

TOP

回復 16# 198188

1.45HQ = 45'高櫃, 沒有 45HQ的櫃 也標 45'高櫃 這樣沒有規則

2.[E31],[E45],[E59]=4.8m 在結果表消失了,規則不明
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 9# singo1232001

因爲要的數據數量不固定。如果是想直接把C欄的貨架序號,全部自動讀取,不是自己輸入貨架序號呢?
舉例1
SR2000                         SR2000     SR2001     SR2002      SR2003
SR2001
SR2002
SR2003

舉例2
SR2000                         SR2000     SR2001     SR2002    SR2003     SR2004    SR2005
SR2001
SR2002
SR2003
SR2004
SR2005

TOP

回復 12# Andy2483

其實我主要的目的是將附件,根據 BF �堛滷ぞd表,製造成BF#001-009的排櫃表。
如果我想根據下面條件讀取資料。
如果儲存格内有”SR“, 一欄就抽取SR+后4個數值 ,另一欄就抽取()括號内的内容
如果儲存格内沒有“SR”, 一欄就抽取第一個空格前的數值 ,另一欄就抽取第一個空格后的數字。

舉例
上架 SR2005(02F单元)
上架 SR2023(03F单元)
2310100528 BF GL3A-001 LAMINATED GLASS UNIT =3PCS
2311160356 AA REPLACEMENT INSULATED GLASS=1pc
2311181293 AA REPLACEMENT INSULATED GLASS=1pc

第一欄                                第二欄
SR2005                              02F单元
SR2023                              03F单元
2310100528                     BF GL3A-001 LAMINATED GLASS UNIT =3PCS
2311160356                     AA REPLACEMENT INSULATED GLASS=1pc
2311181293                     AA REPLACEMENT INSULATED GLASS=1pc

活頁簿1.rar (26.45 KB)

TOP

回復 14# singo1232001


   謝謝。
如果想直接抽取該儲存格内含有SR字眼,然後抽出SR及後面四個數值,例如SR2003 及 SR2002 ,這句如何用程式表達?
上架 SR2003(02F单元)
下架 SR2002(02F单元)

TOP

回復 13# 198188


    切割區隔用而已
可能是big5 轉utf-8異常
把三角型 改成兩個;;好了

TOP

回復 11# singo1232001
感謝注釋,請問    ▲是什麽用途?我每次輸入變成亂碼,是否可以更改其他?

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題