標題:
[發問]
輸出日期
[打印本頁]
作者:
b9208
時間:
2011-1-27 10:10
標題:
輸出日期
各位先進!
問題請教:
已知週次及星期,輸出日期?
[attach]4541[/attach]
非常感謝指導:)
作者:
hugh0620
時間:
2011-1-27 10:49
本帖最後由 hugh0620 於 2011-1-27 10:53 編輯
回復
1#
b9208
樓主~ 你的意思是~
1.條件:週次~ 就秀出該週的日期與每個日期是星期幾嘛???
2. 條件:週次與星期 帶出日期出來??
可以請你把問題詳細說明~ 那樣版主級大大~ 才會清楚了解~
作者:
b9208
時間:
2011-1-27 12:40
Dear hugh
週次 (1103) 及星期 (Mon, Tue, .....) 是原有資料,希望能帶出日期。
Ths
作者:
b9208
時間:
2011-1-27 12:41
Dear hugh
週次 (1103) 及星期 (Mon, Tue, .....) 是原有資料,希望能帶出日期。
Thanks
作者:
b9208
時間:
2011-1-27 13:48
抱歉上次回復按了二次
剛才想到使用IF函數也可以完成需求
A2儲存格輸入當週(1103)週一日期 2011/1/10
A4儲存格輸入 "=IF(B4="Mon",$A$2,IF(B4="Tue",$A$2+1,IF(B4="Wed",$A$2+2,IF( .................."
作者:
eddy
時間:
2011-1-27 14:13
樓主
不知道亂寫的是不是符合你的需求
[attach]4547[/attach]
作者:
Hsieh
時間:
2011-1-27 15:10
回復
5#
b9208
1103
要判讀為2011年第三週
請問1911年第三週怎樣表示?
EXCEL最怕的就是不遵守資料規格
作者:
hugh0620
時間:
2011-1-27 16:14
Hsieh 大大~ 說的是真理~
因為一年52.142.....週~
每個人使用計算的第一週的方式會不一樣~ (每個人判讀第一週的方式不一樣)
如 1/1是在星期一 就簡單多了~ 就是當年的第一週
若 1/1是在星期六 ,則有些會從1/3星期一 當成當年的第一週~
這種細節就需要定義清楚~ 會比較好楚理~
之前幫教授輔導公司時~ 跟同學也有遇到這個問題~
就請公司定義清楚計算第一週的準則~ 就會很好處理~ (那時同學用DELPHI撰寫)
作者:
b9208
時間:
2011-1-27 20:34
Dear Eddy,
請問〞8-WeekToNum〞是什麼意義?為什麼用8減?
WeekToNum是什麼意義?
Dear Hsieh & hugh
非常感謝指導,確實沒有定義凖則。
週次定義從星期一開始
2011/1/1 定義為第一週(不管1/1是星期幾)
201101代表2011年第一週
以上設定是否符合資料規格
謝謝
作者:
oobird
時間:
2011-1-27 22:09
Sub XX()
Set d = CreateObject("Scripting.Dictionary")
a = [FLOOR(MID($A$2,3,2)*7+DATE(2000+LEFT($A$2,2),1,1),7)-12]
For i = 0 To 6
d(Format(a + i, "ddd")) = Format(a + i, "yyyy/m/d")
Next
For Each c In Range([b4], [b65536].End(3))
c(1, 0) = d(Application.Proper(c.Value))
Next
End Sub
複製代碼
[attach]4552[/attach]
作者:
b9208
時間:
2011-1-27 23:13
非常感謝先進們的指導
VBA程式可以使用
接下來研究學習程式的內容
再一次感謝
作者:
Hsieh
時間:
2011-1-27 23:37
回復
9#
b9208
若用201103表示2011年第三周這樣可行
函數方式請參考
A4=DATE(LEFT($A$2,4),1,1)-WEEKDAY(DATE(LEFT($A$2,4),1,1),2)+(RIGHT($A$2,2)-1)*7+MATCH(LOWER(B4),{"mon","tue","wed","thu","fri","sat","sun"},0)
向下複製
VBA請參考
Sub nn()
Set d = CreateObject("Scripting.Dictionary")
k = DateSerial(Left([A2], 4), 1, 1) - Weekday(DateSerial(Left([A2], 4), 1, 1), 2) + (Right([A2], 2) - 1) * 7
For i = 1 To 7
x = UCase(Format(k + i, "ddd"))
d(x) = k + i
Next
For Each c In Range([B4], [B4].End(xlDown))
c.Offset(, -1) = d(UCase(c))
Next
End Sub
複製代碼
作者:
b9208
時間:
2011-1-28 17:02
Hsieh 版主
非常感謝您
函數方式及VBA程式碼 都可以執行
謝謝
作者:
hugh0620
時間:
2011-1-28 17:32
回復
12#
Hsieh
大大這個函數的寫法~ 對我工作上蠻有用處的~
真的很厲害~
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)