Board logo

標題: [發問] 輸出日期 [打印本頁]

作者: 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

  1. Sub XX()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. a = [FLOOR(MID($A$2,3,2)*7+DATE(2000+LEFT($A$2,2),1,1),7)-12]
  4. For i = 0 To 6
  5. d(Format(a + i, "ddd")) = Format(a + i, "yyyy/m/d")
  6. Next
  7. For Each c In Range([b4], [b65536].End(3))
  8. c(1, 0) = d(Application.Proper(c.Value))
  9. Next
  10. 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請參考
  1. Sub nn()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. k = DateSerial(Left([A2], 4), 1, 1) - Weekday(DateSerial(Left([A2], 4), 1, 1), 2) + (Right([A2], 2) - 1) * 7
  4. For i = 1 To 7
  5. x = UCase(Format(k + i, "ddd"))
  6. d(x) = k + i
  7. Next
  8. For Each c In Range([B4], [B4].End(xlDown))
  9. c.Offset(, -1) = d(UCase(c))
  10. Next
  11. End Sub   
複製代碼

作者: b9208    時間: 2011-1-28 17:02

Hsieh 版主
非常感謝您
函數方式及VBA程式碼 都可以執行
謝謝
作者: hugh0620    時間: 2011-1-28 17:32

回復 12# Hsieh


    大大這個函數的寫法~ 對我工作上蠻有用處的~
    真的很厲害~




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)