標題:
想問我的EXCEL比對資料要怎麼寫
[打印本頁]
作者:
tmde987
時間:
2013-1-6 21:08
標題:
想問我的EXCEL比對資料要怎麼寫
有人可以教我檔案中的比對資料整麼寫嗎?
求救大師 看看能不能將我的需求寫出來,工作要用的 但剛接觸EXCEL VBA不太會
作者:
stillfish00
時間:
2013-1-7 09:40
回復
1#
tmde987
兩週的資料會變動的只有數量欄位嗎?
作者:
tmde987
時間:
2013-1-7 11:43
沒錯 !
主要是要統計公司某些物品的變動量
求救各位高手幫忙一下 ,謝謝!!
作者:
freeffly
時間:
2013-1-7 16:41
回復
3#
tmde987
這各是要做安全庫存嗎?
感覺又跟安全庫存不一樣
因為你是針對消耗的部分去購買
而不是補足安全庫存量
感覺你的問題應該是很簡單
可是你要將步驟切很細
很難明白你要的
有點把簡單問題複雜化
如果是計算安全庫存可能就有考量上的差異
但是依你的方式應該是有更簡單的處理方法
作者:
tmde987
時間:
2013-1-7 21:20
或許吧 ! 但每種不同的方法是老闆給我的建議
所以我把它列出來 每個問分開來 畢竟新手不會
短時間要摸有點難 ~~
作者:
Hsieh
時間:
2013-1-8 00:08
本帖最後由 Hsieh 於 2013-1-8 00:09 編輯
回復
5#
tmde987
Sub 按鈕_1()
Dim Ar()
Set d = CreateObject("Scripting.Dictionary")
With Sheet1
For Each a In .Range(.[A2], .[A2].End(xlDown))
d(a.Value) = a.Offset(, 4).Value
Next
For Each a In .Range(.[J2], .[J2].End(xlDown))
i = a.Offset(, 4).Value - d(a.Value)
If i <> 0 Then
ReDim Preserve Ar(s)
Ar(s) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 2).Value, a.Offset(, 3).Value, i, a.Offset(, 5).Value)
s = s + 1
End If
Next
End With
Sheet2.UsedRange.Offset(1) = "" '第2列以下刪除
Sheet2.[A2].Resize(s, 6) = Application.Transpose(Application.Transpose(Ar)) 'A2以下填入
End Sub
複製代碼
Sub 按鈕_2()
Dim Ar()
Set d = CreateObject("Scripting.Dictionary")
With Sheet1
For Each a In .Range(.[A2], .[A2].End(xlDown))
d(a.Value) = a.Offset(, 4).Value
Next
For Each a In .Range(.[J2], .[J2].End(xlDown))
i = a.Offset(, 4).Value - d(a.Value)
If i <> 0 Then
ReDim Preserve Ar(s)
Ar(s) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 3).Value, i)
s = s + 1
End If
Next
End With
Sheet3.UsedRange.Offset(1) = "" '第2列以下刪除
Sheet3.[A2].Resize(s, 4) = Application.Transpose(Application.Transpose(Ar)) 'A2以下填入
End Sub
複製代碼
Sub 按鈕_3()
Dim Ar()
Set d = CreateObject("Scripting.Dictionary")
With Sheet1
For Each a In .Range(.[A2], .[A2].End(xlDown))
d(a.Value) = a.Offset(, 4).Value
Next
For Each a In .Range(.[J2], .[J2].End(xlDown))
i = a.Offset(, 4).Value - d(a.Value)
If i <> 0 Then
ReDim Preserve Ar(s)
Ar(s) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 3).Value, i)
s = s + 1
End If
Next
End With
Sheet4.UsedRange.Offset(2) = "" '第3列以下刪除
Sheet4.[A3].Resize(s, 4) = Application.Transpose(Application.Transpose(Ar)) 'A3以下填入
End Sub
複製代碼
Sub 按鈕_4()
Dim Ar()
Set d = CreateObject("Scripting.Dictionary")
With Sheet1
For Each a In .Range(.[A2], .[A2].End(xlDown))
d(a.Value) = a.Offset(, 4).Value
Next
For Each a In .Range(.[J2], .[J2].End(xlDown))
i = a.Offset(, 4).Value - d(a.Value)
If i <> 0 Then
ReDim Preserve Ar(s)
Ar(s) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 2).Value, a.Offset(, 3).Value, i, "=RC[-2]*RC[-1]")
s = s + 1
End If
Next
End With
Sheet5.UsedRange.Offset(2) = "" '第3列以下刪除
Sheet5.[A3].Resize(s, 6) = Application.Transpose(Application.Transpose(Ar)) 'A3以下填入
End Sub
複製代碼
Sub 按鈕_5()
Dim Ar()
With Sheet6
For Each a In .Range(.[A2], .[A2].End(xlDown))
i = Application.Max(0, a.Offset(, 5).Value - a.Offset(, 4).Value) '計算購買數量
ReDim Preserve Ar(s)
Ar(s) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 2).Value, a.Offset(, 3).Value, i)
s = s + 1
Next
End With
Sheet6.UsedRange.Offset(2, 8) = "" 'I3以下刪除
Sheet6.[I3].Resize(s, 5) = Application.Transpose(Application.Transpose(Ar)) 'I3以下填入
End Sub
複製代碼
作者:
tmde987
時間:
2013-1-8 01:22
感謝Hsieh 大大的解答
按鈕5 這段 執行會錯誤
For Each a In .Range(.[A2], .[A2].End(xlDown))
我還看不出來錯誤的指令在哪 研究指令中 蠻深澳的!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)