返回列表 上一主題 發帖

[發問] 請問如何用VBA達到多重篩選,以及篩選後依序填入??

[發問] 請問如何用VBA達到多重篩選,以及篩選後依序填入??

1.判斷原則為:當某人(王小明)目前國文科目總共花了300分鐘,那麼計劃表中就顯示在『實際花費時間』中的第二進度(國文)180,剩餘的120歸到第五進度(國文)中,也就是一直歸類到實際花費時間小於預計花費時間,或在下一欄位已經沒有此科目讀書計畫進度才容許實際花費時間大於預計花費時間(以歷史為例,意思也就是歸到沒有辦法再往下歸才把所花費時間填入最後的讀書進度)                                       
2.如果用函數是可以辦到上述所講的,但是每個人讀書計畫都不一樣以及每天讀書計畫也會有變動,當學生多就要花費更多時間;以及每天計畫都不一樣,導致每天都要重做一次,所以才想說有沒有可以用VBA的方式篩選學生與科目後,再利用判斷預計時間與實際時間的大小做往下填入的動作,而當判斷到下一欄位已經沒有此科目後,即使實際時間比預計時間大才可填入       

請參考一下我所希望達到目的的檔案,這樣各位前輩們也比較了解
https://sites.google.com/site/yanto913/data/Plan.xls
請各位前輩們幫一下忙,謝謝^^
YOYO

謝謝版主大人,剛好可以利用颱風天鑽研一下VBA,因為功力不夠之前大部分都是用錄製的方法
,還好有版主幫忙,不然這次我真的寫不出來捏!!之後會好好瞭解�堶悸熔[義的,謝謝。
YOYO

TOP

現在遇到了一個問題耶,如果我的實際讀書時間是在sheet3,改成下列就出現錯誤了!!
For Each a In .Sheets("sheet3").Range(.[H2], .[H65536].End(xlUp))
彈出→視窗說找不到方法或資料成員
若改成下列
For Each a In Sheets("sheet3").Range(.[H2], .[H65536].End(xlUp))
彈出→物件或應用程式定義上的錯誤
https://sites.google.com/site/yanto913/data/Plan2.xls
YOYO

TOP

我弄好了,原來是要貼在來源那邊,然後我把With Sheet3拿掉了
Sub Ex()
Set dic = CreateObject("Scripting.Dictionary")
Set dicn = CreateObject("Scripting.Dictionary")
For Each a In Sheets("sheet3").Range([H2], [H65536].End(xlUp))
   dic(a & a.Offset(, 1)) = dic(a & a.Offset(, 1)) + a.Offset(, 2)
Next
For Each a In Sheets("sheet1").Range(Sheets("sheet1").[A2], Sheets("sheet1").[A65536].End(xlUp))
   dicn(a & a.Offset(, 1)) = dicn(a & a.Offset(, 1)) + 1
Next
For Each a In Sheets("sheet1").Range(Sheets("sheet1").[A2], Sheets("sheet1").[A65536].End(xlUp))
    If a <> "" Then
    mytime = Application.Min(a.Offset(, 4), dic(a & a.Offset(, 1)))
    If dicn(a & a.Offset(, 1)) = 1 Then
       a.Offset(, 5) = Val(dic(a & a.Offset(, 1)))
       Else
       a.Offset(, 5) = mytime
       dicn(a & a.Offset(, 1)) = dicn(a & a.Offset(, 1)) - 1
       dic(a & a.Offset(, 1)) = dic(a & a.Offset(, 1)) - mytime
    End If
    End If
Next
End Sub

剛剛上網查了一下用With Sheet3可以取代Sheets("sheet3")
也就是程式由Sheets("sheet3").Range([H2], [H65536].End(xlUp))
變成.Range(.[H2], .[H65536].End(xlUp))
不知道為什麼.[H2], .[H65536]也都要多一個小點. 呢??這我就不知道了
YOYO

TOP

謝謝版主,我瞭解了,這個程式對我非常有幫助,我也正在學習VBA語法,希望以後能像版主用少少幾行就能達到效果的功力    謝謝
YOYO

TOP

        靜思自在 : 知識要用心體會,才能變成自己的智慧。
返回列表 上一主題