標題:
[發問]
自動產生特定日期功能
[打印本頁]
作者:
iceandy6150
時間:
2021-10-30 00:39
標題:
自動產生特定日期功能
本帖最後由 iceandy6150 於 2021-10-30 00:43 編輯
大家好
我有一個訓練表,定期辦理訓練,按照梯次走
目前自己用函數去處理
想請問如何使用按鈕自動產生? 謝謝
因為梯次是一串文字
有時候又要轉換為日期格式,還要加減月份,日又是固定值
不知道有沒有更好更快的處理方法
讓我只要填入梯次,按下自動產生按鈕,後面的格子所需要的都能自動出現
(例如我填入六個梯次,後面都會自動產生)
謝謝
[attach]34302[/attach]
綠色是基準,之後是用函數去處理
目前結訓測驗日是距離初級訓開課日8.5個月後辦理
我也想增加一個功能,讓我可以選擇要幾個月後辦理(最低是6,因為三種訓結束後才能結訓測驗)
[attach]34303[/attach]
作者:
samwang
時間:
2021-10-30 08:14
回復
1#
iceandy6150
不好意思,看不太懂您實際需求,請在說明詳細,謝謝
因為梯次是一串文字
>>一串文字在哪裡?,要如何處理?
有時候又要轉換為日期格式,還要加減月份,日又是固定值
>>可以舉實際範例說明嗎?
不知道有沒有更好更快的處理方法
讓我只要填入梯次,按下自動產生按鈕,後面的格子所需要的都能自動出現
(例如我填入六個梯次,後面都會自動產生)
>>規則是什麼?
謝謝
作者:
准提部林
時間:
2021-10-30 12:16
看不懂邏輯, 先將公式整理一下:
[attach]34315[/attach]
"結訓測驗日"規則不清楚, 大約抓著做, 如:8個月, 應是滿8個月--亦即第9個月
vba可將第1及2行保留公式, 再依所需梯次數往下貼入即可
作者:
iceandy6150
時間:
2021-10-31 00:34
回復
3#
准提部林
抱歉,重頭說一次
規則是這樣
每個月報名分為上半行月(1號到15號) 以及下半月(16號到月底)
以第一行為例,在104年7月1~15報的人
叫做1040801梯 (每梯人數不一定,有多有少,本案例暫時不管人數)
初級訓練為期一個月
1040801梯的人,開始訓練日為104/08/01,要通過初級訓練必須要測驗,測驗日在結束月份的22號(所以是104/08/22)
中級訓練為期三個月
1040801梯的人,中級開始訓練日是104/09/01 (因為八月整個月是初級訓練),三個月就是九、十、十一
測驗日在結束月份的22號(所以是104/11/22)
高級訓練為期兩個月
1040801梯的人,高級開始訓練日是104/12/01,個兩月就是十二、明年的一月
測驗日在結束月份的22號(所以是105/01/22)
這三種訓練都要通過,最少是六個月
之後會安排一個結訓測驗
結訓測驗日,不是在01號就是15號,這兩種
有時候是六個月後馬上測驗
有時候是七個月後
我貼的案例是8.5個月後測驗
(1040801梯的人,開始訓練日為104/08/01,結訓測驗日為105/03/15)
如果改8個月後測驗,結訓測驗日為105/03/01
而下半月的人,叫做1040816梯
三種訓練的開始日都是16號
測驗日在結束月份的06號
我貼的案例是8.5個月後測驗
(1040816梯的人,開始訓練日為104/08/16,結訓測驗日為105/04/01)
總規則整理一下
一、我只要輸入梯次,梯次是一個字串(例如1100901),後面會自動產生並算好各欄位日期,(格式為110/09/22這樣)
二、上半月報名的人,三種訓練的開始日都是01號;測驗日在結束月份的22號
下半月報名的人,三種訓練的開始日都是16號;測驗日在結束月份的06號
三、結訓測驗日的產生,可以讓我自由輸入(橘色部分),並且最低是6起跳(會自動檢查)
作者:
准提部林
時間:
2021-10-31 10:20
本帖最後由 准提部林 於 2021-10-31 10:25 編輯
回復
4#
iceandy6150
依你舉的例子:梯次 1040801
>> 結測 8.5月 >> 105/03/15
往前推算
>> 結測 7.5月 >> 105/02/15
>> 結測 6.5月 >> 105/01/
15
---高級測驗 105/01/
22
--- 結測早于高測???
>> 結測 6.0月 >> 105/01/
01
---高級測驗 105/01/
22
--- 結測早于高測???
===============
梯次 1040816
>> 結測 8.5月 >> 105/04/01
往前推算
>> 結測 7.5月 >> 105/03/01
>> 結測 6.5月 >> 105/02/
01
---高級測驗 105/02/
06
--- 結測早于高測???
>> 結測 6.0月 >> 105/01/
16
---高級測驗 105/02/
06
--- 結測早于高測???
============================
作者:
ML089
時間:
2021-10-31 20:54
建議2列及3列都改為 excel日期(西元日期) 輸入,
再格式化為中文日期
梯次格式化 emmdd
報名截止格式化 e/mm/月底
其他隔式化 e/mm/dd
A4 以後的公式就可以大量減化
A4 =EDATE(A2,1)
右拉下拉
其他 A2:I3 另有公式詳檔案
作者:
iceandy6150
時間:
2021-10-31 20:59
回復
5#
准提部林
嗯...我想這個是計算方式的差異
最快能結訓測驗應該要在...高級測驗結束後,最接近的01號或15號
梯次 1040801
>> 結測 8.5月 >> 105/03/15
往前推算
>> 結測 7.5月 >> 105/02/15
>> 結測 7.0月 >> 105/02/01
>> 結測 6.5月 >> 105/01/15 ---高級測驗 105/01/22 --- 結測早于高測???
>> 結測 6.0月 >> 105/01/01 ---高級測驗 105/01/22 --- 結測早于高測???
高級測驗 105/01/22---則最早結測為105/02/01
以月分來看1040801梯
08~隔年02,為8+6=14 (12進一年...餘2)
數學計算,8月已經自己算一個月了,所以我才會說最低6
如果手算,8月要算,08,09,10,11,12,01,02,這樣是足七個月,也就是結測 7.0月 >> 105/02/01
===============
梯次 1040816 亦同
---高級測驗 105/02/06 --- 則最早結測為105/02/15
08~隔年02,為8+6=14 (12進一年...餘2)
對了,因為這些日期出來,要合併列印到WORD去
所以如果用自訂e/mm//dd,可能會出現錯誤
日期可能還是要維持字串 "105/02/15",這樣合併列印才不會出錯
所以是不是先從字串-->日期,加減後再變回字串 ?
謝謝
作者:
iceandy6150
時間:
2021-11-1 23:44
回復
3#
准提部林
版主大您好
您提供的檔案可以準確使用
但是結訓測驗日,是01,15這兩種,您的公式出來是01,16這兩種
不知道怎麼修改? 謝謝
另外,我為了讓WORD合併列印可以正常讀取
必須把"日期"改成"字串"
我的方法是在工作表2去設定
比如B2=TEXT(工作表1!B2,"e/mm/dd")
然後把公式從B2拖曳到~右底,在拖曳到~下底
再從工作表2的A1,Ctrl+Shift+右 ,Ctrl+Shift+下
就可以整個複製起來,到工作表3的A1,貼上 "值"
就大功告成啦
只不過,不曉得為何會出現奇怪的提醒
[attach]34332[/attach][attach]34332[/attach]
作者:
准提部林
時間:
2021-11-5 10:21
回復
8#
iceandy6150
重新做, 日期都是民國年月日(文字型態):
[attach]34346[/attach]
1) 若你的版本無法使用 "r"&104/01/01..轉成西元年, 就比較麻煩
2) 新版excel對數值或日期型態, 而以文字型態處理時, 大部份會提示及標示, 並不妨礙正常使用
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)