標題:
一個星期天的問題
[打印本頁]
作者:
周大偉
時間:
2011-6-16 22:55
標題:
一個星期天的問題
大大們, 好
小弟有一難題, 想了數天還是沒想到用何函數, 或因本沒有其函數, 故衷心請教大大們, 附件中有說明, 謝謝!!
[attach]6683[/attach]
作者:
Hsieh
時間:
2011-6-16 23:08
無法得知年分
作者:
周大偉
時間:
2011-6-16 23:26
本帖最後由 周大偉 於 2011-6-16 23:27 編輯
hsieh大大好,
謝謝回應, 是否一定需要年份, 假若小弟於AL,1填入如2011/1, 這代表2011年1月, 這就是否可行, 附圖,
若日期參考年份自行顯示, 1-31號就是否相同, 因想起月份也有月大月小及2月份28天等問題,
[attach]6684[/attach]
作者:
Hsieh
時間:
2011-6-16 23:38
本帖最後由 Hsieh 於 2011-6-16 23:48 編輯
回復
3#
周大偉
[attach]6686[/attach]
作者:
周大偉
時間:
2011-6-16 23:54
謝謝hsieh大大,
說真的, 小弟也曾想過if函數, 但功力太淺, 去到hsieh大大這個級數實太勁, 因小弟如何設想, 也沒法想到這樣運用, 勁, 勁, 勁.. 祝快樂.. 謝謝!!
作者:
317
時間:
2011-6-17 15:16
hsieh前輩, 安好
利用名稱用於函數, 小妹也獲益良多, 同時亦有問題請教, 每月有月大月小, 星期天按年份及月份變更, 如果該月是月小, 第二列多出的如31號, 或2月份29及30號可否自行消失, 若月大, 尾數則顯示,,,如31...
作者:
周大偉
時間:
2011-6-19 08:40
Hsieh版主大大好,
得大大協助解決星期天函數問題, 實感激萬分,
現時因小弟需要處理一堆由1950年至今的舊檔案入機, 工作表太多, 故希望大大能再度協助表中日期問題, 附件, 先行謝謝!!
[attach]6699[/attach]
作者:
Hsieh
時間:
2011-6-19 09:40
本帖最後由 Hsieh 於 2011-6-19 09:46 編輯
回復
6#
317
以4#檔案為例
原來第2列是由使用者自行輸入
改用公式
G2=IF(MONTH(DATE($AL$1,y,COLUMN(A1)))<>--y,"",DAY(DATE($AL$1,y,COLUMN(A1))))
G3=IF(G2="","",CHOOSE(WEEKDAY(--($AL$1&"/"&SUBSTITUTE(MID(x,FIND("]",x)+1,3),"月","")&"/1")+G2-1,2),"一","二","三","四","五","六","日"))
向右複製
因為工作表名稱是月份,所以使用公共定義取出工作表名稱的數字部分當作月份,這樣更改工作表名稱與年份的數值就能正確顯示日期
[attach]6702[/attach]
作者:
Hsieh
時間:
2011-6-19 10:02
回復
7#
周大偉
看不懂你要如何整理多年資料
看看8#檔案是否你能應用,再把你的需求講清楚
作者:
周大偉
時間:
2011-6-19 12:41
回復
9#
Hsieh
謝謝, 這正是小弟所需要, 其實整理的檔案, 是把公司多年來每月一些記錄重新整理, 而檔案第二列第第三列是日期及星期天,
假若日期及星期天能自行變更為對應, 便節省了很多時間, 故請教大大們, 得版主大大協助, 衷心感謝.....
作者:
317
時間:
2011-6-19 15:47
回復
8#
Hsieh
前輩, 安好
就G3=IF(G2="","",CHOOSE(WEEKDAY(--($AL$1&"/"&SUBSTITUTE(MID(x,FIND("]",x)+1,3),"月","")&"/1")+G2-1,2),"一","二","三","四","五","六","日"))這條函數, 前輩可否簡描述制作流程,
因我正在鑽研中, 一些地方實有不明, 如("]",x), 就代表什麼, 小妹實想從中吸收多少, 謝過前輩..
作者:
Hsieh
時間:
2011-6-19 17:07
回復
11#
317
公式中的x是使用cell函數得到的filename
你在其它空白處寫入公式=x就知道x內容是什麼
看中括號內代表的是參照中的什麼位置就知道find的作用了
作者:
317
時間:
2011-6-19 17:37
謝謝前輩解答, 我會用心去鑽研, 再三謝過, 祝健康,快樂!!
作者:
周大偉
時間:
2011-6-21 20:14
Hsieh版主大大好,
先謝過大大給予解決一星期天的問題, 而大大給予的函數的確很勁, 但小弟發現一問題, 假若我復製函數貼到其它檔案, 便會彈出提示訊息,附圖, 如何可把這麼好的函數復製到其它檔案運用, 請大大教導..感恩..謝謝!!
[attach]6730[/attach]
作者:
Hsieh
時間:
2011-6-21 23:02
回復
14#
周大偉
巨集公式?
我的方法沒有用到巨集阿
應該是定義名稱的問題
你要把定義名稱在新活頁簿中建立
並且該檔案已經儲存
至於該訊息我就沒遇過不知是為何產生的
作者:
317
時間:
2011-6-26 17:53
Hsieh前輩, 好
大大的星期天函數, 我研究两天, 若沒有留意到定義名稱, 真的是沒法完成, 我亦親自動手寫入一個新的檔案, 先行設定3個定義名稱, 再從資料編輯列寫入公式, 成功了, 在這條函數學了及變通了, 謝過大大,
大大, ,若把這函數轉成vba程式, 放在模組中, 用家設一按鈕運動就是否可以..謝謝...
作者:
317
時間:
2011-6-29 19:07
Hsieh好
上次的提問, 應是表達不清色, 故重新整理問題發問, 附檔有明細說明, 先行謝過...
[attach]6874[/attach]
作者:
Hsieh
時間:
2011-6-29 19:35
回復
17#
317
Sub Ex()
Dim Ar()
y = [AL1]
m = Val(ActiveSheet.Name)
If m < 1 Or m > 12 Then MsgBox "工作表名稱需要符合1~12月": Exit Sub
d = 1
mydate = DateSerial(y, m, d)
Do Until Month(mydate) <> m
ReDim Preserve Ar(s)
k = Format(mydate, "aaa")
Ar(s) = Array(d, Format(mydate, "aaa"))
s = s + 1
d = d + 1
mydate = DateSerial(y, m, d)
Loop
[G2:AK3] = ""
[G2].Resize(2, s) = Application.Transpose(Ar)
End Sub
複製代碼
作者:
317
時間:
2011-6-29 21:01
回復
18#
Hsieh
謝謝大大回應,
已試過, 而且無須用上名稱, 快捷很多, 再謝謝,
大大, 在顯示星期天中, 傳回是星期一, 星期二, 可否把星期這两字刪除, 如星期一, 顯示一, 如星期二, 顯示二, 感恩..
作者:
Hsieh
時間:
2011-6-29 23:05
回復
19#
317
Ar(s) = Array(d, Replace(Format(mydate, "aaa"), "週", ""))
作者:
317
時間:
2011-6-29 23:10
b]回復
18#
Hsieh
大大好,
上文中恐表達不好, 現附上圖片, 可否把把程式改成圖1星期一星期二類轉換成下圖中單一數字, 一,二,三,四,五,六,日,謝謝, 祝快樂..
[attach]6878[/attach][attach]6878[/attach]
作者:
317
時間:
2011-6-29 23:17
本帖最後由 317 於 2011-6-29 23:20 編輯
Hsieh大大, 安好..
已把程式轉成 Ar(s) = Array(d, Replace(Format(mydate, "aaa"), "週", "")), 但還是不成功, 原因何解..請大大協助
Sub Ex()
Dim Ar()
y = [Am1]
m = Val(ActiveSheet.Name)
If m < 1 Or m > 12 Then MsgBox "工作表名稱需要符合1~12月": Exit Sub
d = 1
mydate = DateSerial(y, m, d)
Do Until Month(mydate) <> m
ReDim Preserve Ar(s)
k = Format(mydate, "aaa")
Ar(s) = Array(d, Replace(Format(mydate, "aaa"), "週", ""))
s = s + 1
d = d + 1
mydate = DateSerial(y, m, d)
Loop
[G2:AK3] = ""
[G2].Resize(2, s) = Application.Transpose(Ar)
End Sub
作者:
Hsieh
時間:
2011-6-29 23:33
標題:
或
本帖最後由 Hsieh 於 2011-6-30 08:09 編輯
回復
22#
317
可能是版本問題
Format的格式用"aaa"在我的電腦上是顯示"週日"
如果你的電腦上顯示是"星期日"
那就將Replace的字串改成"星期"即可
Ar(s) = Array(d, Replace(Format(mydate, "aaa"), "星期", ""))
或
Ar(s) = Array(d, Right(Format(mydate, "aaa"),1))
作者:
317
時間:
2011-6-30 01:28
本帖最後由 317 於 2011-6-30 07:25 編輯
真是大大所說, 版本問題,
在此謝過大大, 祝願快樂, 感恩..
作者:
周大偉
時間:
2011-10-8 22:45
Hsieh版主大大,
先行謝過早前於這帖子的回覆, 有一疑問, vba程式中可否變為附件中, 按下按鈕, 同時把12張月份工作表星期及日期變更, 如可以的話, 的確節省了很多時間, 謝謝!!
[attach]8203[/attach]
作者:
Hsieh
時間:
2011-10-8 23:38
回復
25#
周大偉
Sub Ex()
Dim y$, Ar(), w$, j%, i%
y = InputBox("輸入年分", , Year(Date))
If y = "" Then Exit Sub
For i = 1 To 12
d = Day(DateAdd("m", 1, DateSerial(CInt(y), i, 1)) - 1)
ReDim Preserve Ar(1 To 2, 1 To d)
For j = 1 To d
w = Replace(Format(Weekday(DateSerial(CInt(y), i, j), 2), "aaa"), "週", "")
Ar(1, j) = j
Ar(2, j) = w
Next
Sheets(i & "月").[G2:AK3] = ""
Sheets(i & "月").[G2].Resize(2, d) = Ar
Erase Ar
Next
End Sub
複製代碼
作者:
oobird
時間:
2011-10-8 23:55
Sub Ex()
Dim y%, m%, n%, d%
y = [am1]
For m = 1 To 12
With Sheets(m & "月")
.[g2:ak3] = ""
n = Day(DateSerial(y, m + 1, 1) - 1)
ReDim arr(1 To 2, 1 To n)
For d = 1 To n
arr(1, d) = d
arr(2, d) = Right(Application.Text(DateSerial(y, m, d), "aaa"), 1)
Next
.[g2].Resize(2, n) = arr
End With
Next
End Sub
複製代碼
[attach]8204[/attach]
作者:
周大偉
時間:
2011-10-9 09:44
hsieh大大 oobord大大,
衷心謝過两位版主大大回應, 祝願健康快樂...
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)