返回列表 上一主題 發帖

關於傳回日期的問題

關於傳回日期的問題

有請各位高手大大們幫忙
在A1插入一列並以A2開始
傳回對應於B2的日期是一年中的第幾週
謝謝 Book1.rar (15.04 KB)

回復 1# f3202

直接在Row 3 呈現
Sub wk()
    For Each dd In Range([B1], [B1].End(xlToRight))
        Cells(3, dd.Column) = Format(dd, "ww", vbMonday, vbFirstFullWeek)
    Next
End Sub

語法說明: Format(expression[, format[, firstdayofweek[, firstweekofyear]]])
firstdayofweek - 定義星期幾是一周的開始
firstweekofyear -  定義第一周的條件
這兩參數之設定會影響結果喔,請參考 "Excel Help"說明

TOP

回復 1# f3202
  1. Sub nn()
  2. If [A2] <> "" Then Rows(2).Insert
  3. For Each a In Range([B1], [B1].End(xlToRight))
  4.    a.Offset(1, 0) = DatePart("ww", a)
  5. Next
  6. End Sub
複製代碼
學海無涯_不恥下問

TOP

謝謝 victorl 大大
有小小出入
能否先在A1插入一列
然後在A2開始顯示週數
還是感謝您

TOP

回復  f3202
Hsieh 發表於 2010-6-12 15:59


謝謝 Hsieh 版主
執行時在 " a.Offset(1, 0) = DatePart("ww", a)"
出現
執行階段錯誤'5':
程式呼叫或引數不正確
煩請版主了 謝謝

TOP

照你的檔案我執行沒問題
你應該是在第一列的值是非日期產生錯誤
學海無涯_不恥下問

TOP

謝謝 Hsieh 版主

第一列的值應是日期格式
如A2 變更格式成為5月21日
執行 SUB NN
我的程式在第二列插入一列
然後就出現同樣問題
有勞版主了 謝謝

TOP

Dear Hsieh,
執行後插入的第二列格式為日期格式,如下:
代碼\日期        2010/5/21        2010/5/20        2010/5/19
        1900/1/21        1900/1/21        1900/1/21
1101        25.95        26.75        27.1

手動將第二列格式設定成通用,則OK,如下:
代碼\日期        2010/5/21        2010/5/20        2010/5/19
        21        21        21
1101        25.95        26.75        27.1

感謝版主分享

TOP

回復 8# b9208
  1. Sub nn()
  2. If [A2] <> "" Then Rows(2).Insert
  3. Rows(2).NumberFormat = "0"
  4. For Each a In Range([B1], [B1].End(xlToRight))
  5.    a.Offset(1, 0) = DatePart("ww", a)
  6. Next
  7. End Sub
複製代碼
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2010-6-13 20:47 編輯

回復 7# f3202


    這跟A2格式沒關係吧!
第2列插入後會延續第一列格式
最主要是你第一列的資料要確定是日期資料才行
執行後是下列所示
代碼\日期        5月21日        5月20日        5月19日        5月18日        5月17日        5月14日
        21        21        21        21        21        20
1101        25.95        26.75        27.1        26.45        26.3        26.9
學海無涯_不恥下問

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題