2015-02-17 88 views
-1

我正在構建一個文件,以便在查看材料時跟蹤我的目標。既然目標是每天閱讀一章,我想根據開始日期顯示我的進度。由於這是一項週期性審查,因此需要採用某種形式的模塊化算術來正確考慮在上次完成後重新開始列表。我無法圍繞一個簡單的方法來通過Excel公式或VBA編程來實現這一點,並且認爲這裏的專家會有所幫助。excel中基於列表的模塊化算術

樣品表:

當前週期的天:XXX

預訂#_of_Chapters

教科書10

書B 15

預訂-C 30

書D 5

章節總數:60

今天:書YYY ZZZ章

預期結果:如果XXX是40,YYY是預定C和ZZZ爲預訂一種用於書B第15章(40-10和15 )。如果XXX是62,那麼YYY是Book A(因爲我們已經重新啓動)並且ZZZ是第2章。

我目前沒有開始添加到此帖子的VBA代碼。

謝謝!

回答

2

如果您記錄以前的書籍中有多少章,這會更容易。這是我設置的CSV:

週期的當前日期:16,
,,
書,章節,滬指。章節
書A,10,0
書B,15,10
書C,30,25
書d,5,55

我用於上一頁的公式。章節,但你真的不需要,如果你的名單真的這麼短。

=SUM($B$4:$B4)-B4 

現在你擁有了所有你需要的東西。你可以打破它分爲3個配方,使其更容易跟蹤:(我的是範圍E1:E3

=IF(MOD(B1,60)=0,60,MOD(B1,60)) 
=MATCH(E1,C4:C7) 
="Book " & INDEX(A4:A7,E2) & " Chapter " & E1-INDEX(C4:C7,E2) 

...或者你可以有一個很大的公式:

="Book " & INDEX(A4:A7,MATCH(IF(MOD(B1,60)=0,60,MOD(B1,60)),C4:C7)) & " Chapter " & IF(MOD(B1,60)=0,60,MOD(B1,60))-INDEX(C4:C7,MATCH(IF(MOD(B1,60)=0,60,MOD(B1,60)),C4:C7)) 

如果你想只是書的名稱和章號,它會是這些:

=INDEX(A4:A7,E2) 
=E1-INDEX(C4:C7,E2) 

...或standalones:

=INDEX(A4:A7,MATCH(IF(MOD(B1,60)=0,60,MOD(B1,60)),C4:C7)) 
=IF(MOD(B1,60)=0,60,MOD(B1,60))-INDEX(C4:C7,MATCH(IF(MOD(B1,60)=0,60,MOD(B1,60)),C4:C7)) 

對於最終應用程序,我建議如下:

  • 讓章動態的,而不是總數量的硬編碼在我的例子顯示60
  • 格式化最終輸出看起來像你需要的任何東西
  • 保持公式分離,所以你可以排除故障,如果事情變得瘋狂。大公式給出了很好的結果,但很難解決。
+0

不,這個清單並不是這麼簡單 - 有超過500個章節分佈在多個類別中,有數十本書!這看起來像是可行的。我從來沒有像以前那樣使用過MOD()函數。希望今後晚些時候我會加入!謝謝! – 2015-02-17 22:11:07