樞紐的方式我不會, 所以就試著用比較普通的方式來達成 :
Sub nn()
Dim sStr$, sDate$
Dim iRow%, iI%
Dim vDate
Dim oD As Object
Set oD = CreateObject("Scripting.Dictionary")
iRow = [A65535].End(xlUp).Row
For iI = 2 To iRow
oD(CStr(Cells(iI, 1))) = oD(CStr(Cells(iI, 1))) + Cells(iI, 3)
Next iI
vDate = InputBox("請輸入要查詢的收單日期 : ", "輸入收單日期")
For iI = 2 To iRow
If Trim(CStr(Cells(iI, 4))) = Trim(CStr(vDate)) Then
If sDate <> CStr(Cells(iI, 1)) Then
sStr = sStr + Chr(10) + CStr(Cells(iI, 1)) + " : " + CStr(oD(CStr(Cells(iI, 1))))
sDate = CStr(Cells(iI, 1))
End If
End If
Next iI
MsgBox "收單日期 : " + vDate + " 的數量" + sStr
End Sub作者: Hsieh 時間: 2011-5-24 23:20
Sub ex()
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
myday = CDate(InputBox("輸入日期", , Date))
For Each a In Range([D2], [D65536].End(xlUp))
If a = myday Then d(a.Offset(, -3) & "") = d(a.Offset(, -3) & "") + a.Offset(, -1)
Next
For Each ky In d.keys
d1(ky & ":" & d(ky)) = ""
Next
MsgBox Join(d1.keys, Chr(10))
End Sub
複製代碼
作者: GBKEE 時間: 2011-5-25 08:11
本帖最後由 GBKEE 於 2011-5-25 08:13 編輯
回復 2#luhpro
樓主希望 INPUTBOX輸入收單日期,跑出每個處方日期的數量加總
For iI = 2 To iRow
oD(CStr(Cells(iI, 1))) = oD(CStr(Cells(iI, 1))) + Val(Cells(iI, 3))
Next iI
這段程式碼是每一處方日期的數量加總作者: akimunekyo 時間: 2011-5-25 08:37
回復 9#akimunekyo
跑出來的數量會空白我猜是輸入的日期文字不 Match 所以抓不到資料,
附檔[attach]6351[/attach]開啟後按下 "查詢資料" 按鈕輸入日期 100/5/23 就會看到結果了.
如果想要知道一個指令的功能可以在VBA編輯器中Mark該指令後再按下 F1 按鍵就會看到線上說明了.
trim 是去掉字串前後方的空白字元
Cstr 是強制將資料改成字串格式
Dim中變數名稱右邊加 : $ 等同 As String % 等同 As Integer
Dim sStr$ 即等同 Dim sStr As String