依訂單資料轉換成六週排程表,敬請各位大大賜教!!!
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
依來源資料比對符合日期套取在對應的欄位上???
如附件每日會有資料填於Sheet上,可否使用VBA將資料套取於Sheet2上的表格格式,懇請各位高手教導,在此先謝謝:)
主要依"交期"欄位會有分多筆,於需求日需加總同訂單數,而交期欄位各別比對其對應的符合日期欄位
Book1.rar (2.03 KB)
|
|
|
|
|
|
|
- 帖子
- 967
- 主題
- 0
- 精華
- 0
- 積分
- 1001
- 點名
- 0
- 作業系統
- WIN XP
- 軟體版本
- OFFICE 2003
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-11-29
- 最後登錄
- 2022-5-17
 
|
2#
發表於 2012-4-25 00:02
| 只看該作者
回復 1# p6703
看不懂如何對應? 如何填入sheet2?
給個範例 填入excel表內 較易了解 |
|
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
3#
發表於 2012-4-25 06:44
| 只看該作者
回復 2# register313
他的意思應該是:
|
|
|
|
|
|
|
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
4#
發表於 2012-4-25 09:17
| 只看該作者
感謝c_c_lai 兄的補充說明,的確此就是小弟所想要的功能
但再額外補充說明一下,就如符件中的Sheet1上的訂單資料,其實有三筆是重覆的(因交期因素把它拆開來),但套到Sheet2時要匯整成一項(需求數加總,並依交期數分別套在對應的日期上) |
|
|
|
|
|
|
- 帖子
- 967
- 主題
- 0
- 精華
- 0
- 積分
- 1001
- 點名
- 0
- 作業系統
- WIN XP
- 軟體版本
- OFFICE 2003
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-11-29
- 最後登錄
- 2022-5-17
 
|
5#
發表於 2012-4-25 18:12
| 只看該作者
回復 4# p6703
程式語法不理想,尚有改進空間,請指正- Sub zz()
- Set d = CreateObject("scripting.dictionary")
- With Sheet1
- ar = .Range("A2:F" & .[F2].End(xlDown).Row)
- For i = 1 To UBound(ar)
- x = ar(i, 1) & "," & ar(i, 2) & "," & ar(i, 3)
- If Not d.exists(x) Then d.Add x, ar(i, 4) Else d(x) = d(x) + ar(i, 4)
- Next i
- End With
- a = d.keys: b = d.items
- c = 0
- With Sheet2
- .[A1].CurrentRegion.Offset(1, 0) = ""
- For i = 0 To d.Count - 1
- y = Split(a(i), ",")
- .Range("A2").Offset(c, 0).Resize(1, 3) = y
- .Range("D2").Offset(c, 0).Resize(2, 1) = Application.Transpose(Array("需求日", "交期"))
- For j = 2 To Sheet1.[A2].End(xlDown).Row
- x = Sheet1.Cells(j, 1) & "," & Sheet1.Cells(j, 2) & "," & Sheet1.Cells(j, 3)
- If a(i) = x Then
- E = Application.Match(Sheet1.Cells(j, 5), .Range(.[E1], .[E1].End(xlToRight)), 0)
- .Range("E2").Offset(c, E - 1) = d(x)
- F = Application.Match(Sheet1.Cells(j, 6), .Range(.[E1], .[E1].End(xlToRight)), 0)
- .Range("E3").Offset(c, F - 1) = Sheet1.Cells(j, 4)
- End If
- Next j
- c = c + 2
- Next i
- End With
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
6#
發表於 2012-4-25 21:49
| 只看該作者
感謝register313兄指教,但小弟將程式碼複製執行巨集時,卻跑出"執行階段錯誤 '424': 此處需要物件"的警告視窗,停在.[A1].CurrentRegion.Offset(1, 0) = ""此列,不知何故??? |
|
|
|
|
|
|
- 帖子
- 967
- 主題
- 0
- 精華
- 0
- 積分
- 1001
- 點名
- 0
- 作業系統
- WIN XP
- 軟體版本
- OFFICE 2003
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-11-29
- 最後登錄
- 2022-5-17
 
|
7#
發表於 2012-4-25 21:54
| 只看該作者
|
|
|
|
|
|
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
8#
發表於 2012-4-25 22:27
| 只看該作者
感謝register313兄,可以執行了,但小弟不明白,程式碼一樣,因何小弟自己複製貼上的就不行呢???還有小弟接觸vba不久,不知是否可請register313兄針對程式碼小小說明一下,謝謝... |
|
|
|
|
|
|
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
9#
發表於 2012-4-27 23:18
| 只看該作者
小弟先摸索看看了.再次感謝register313兄^^ |
|
|
|
|
|
|
- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 140
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-6-10
               
|
10#
發表於 2012-4-27 23:59
| 只看該作者
本帖最後由 Hsieh 於 2012-4-28 00:11 編輯
回復 4# p6703 - Sub Ex()
- Dim A As Range
- Set d = CreateObject("Scripting.Dictionary")
- With Sheet2
- n = .Cells(1, .Columns.Count).End(xlToLeft).Column - 1
- s = Day(.[E1])
- With Sheet1
- For Each A In .Range(.[A2], .[A2].End(xlDown))
- ReDim ar(0 To 1, 0 To n)
- m = A & "," & A.Offset(, 1) & "," & A.Offset(, 2)
- If IsEmpty(d(m)) Then
- GoTo 10
- Else
- For i = 0 To 1
- For j = 0 To n
- ar(i, j) = d(m)(i, j)
- Next
- Next
- End If
- 10
- x = Day(A.Offset(, 4)) - s + 4 '需求日
- y = Day(A.Offset(, 5)) - s + 4 '交期
- For i = 0 To 2
- ar(0, i) = A.Offset(, i)
- Next
- ar(0, 3) = "需求日"
- ar(1, 3) = "交期"
- ar(0, x) = ar(0, x) + A.Offset(, 3) '需求
- ar(1, y) = A.Offset(, 3)
- d(m) = ar
- Erase ar
- Next
- End With
- r = 2
- For Each ky In d.keys
- .Cells(r, 1).Resize(2, n + 1) = d(ky)
- r = r + 2
- Next
- End With
- End Sub
複製代碼 |
|
學海無涯_不恥下問
|
|
|
|
|