Excel 搜尋

2009-09-18 7:06 am
圖示:http://img188.imageshack.us/img188/4328/123nud.jpg


我自己做了日曆(如上圖)
希望改了年份後,時間跟工作代號都會自動更改(固定 S → C → ST → DD)
現在大部份都完成了!
只差在要搜尋前一個月最後一天的工作代號一直試不成功


也就是說
要搜尋 B6 ~ H17 這個範圍裡的最後一天(1/31)
然後顯示他的工作代號(ST)


不知道有沒有大大會,可以教一下!謝謝^^
更新1:

aacheong大大: 這個程式碼執行了之後 顯示「沒有設定物件變數或With區塊變數」 這個該怎麼解決呢@@? gain大大: 感謝您提供的檔案,不過比較希望是依自己個人需求客製化的 所以才會自己重新製作一份!還是謝謝您囉^^

回答 (4)

2009-09-18 10:07 pm
✔ 最佳答案
如日期均已填好, 不需考慮上月最後一日是誰, 只要順序不變,
B7公式:
=IF(B6="","",CHOOSE(MOD(B6,4)+1,"ST","DD","S","C"))

複製公式到每個輪值格, 則J7公式:
=IF(J6="","",CHOOSE(MOD(J6,4)+1,"ST","DD","S","C"))

2009-09-18 13:09:07 補充:
如附件:
http://www.go2upload.com/file/2/f98fb9.html

2009-09-18 14:07:58 補充:
公式:
=INDEX(B6:H17,SMALL(IF(B6:H17=MAX(B6:H17),ROW(B6:H17)),1)-4,SMALL(IF(B6:H17=MAX(B6:H17),COLUMN(B6:H17)),1)-1)
陣列公式, 輸入完同時按 [Ctrl] + [Shift] + [Enter]
如附件 J3 :
http://www.go2upload.com/file/2/9e462f.html



2009-09-18 14:09:51 補充:
最好的做法, 也是依我意見裡的做法較簡便, 給版大的建議

2009-09-21 00:26:52 補充:
aacheong大大的程式碼, 將 LastDay 那行改為下列這樣即可:

LastDay = Format(Application.Max(WorkRange), "d")
2009-09-19 7:55 am
To aacheong大大

我用你的程式的話也是中斷在 LastRow = WorkRange.Find(LastDay).Row 耶
怎麼會試出這麼多結果XD
剛有研究了一下,不過還是一樣╯╰
2009-09-18 7:45 pm
題目是搜尋 B6 ~ H17 這個範圍裡的最後一天,然後顯示他的工作代號。
但是事實上最後一天只有可能出現在最後三個禮拜,
而且只搜尋日期即可,不需搜尋工作代號。
所以我把搜尋範圍改為 H12, B14:H14, B16:C16 三塊。
程式如下:
Sub test()
Dim WorkRange As Range

Set WorkRange = Union(Range("H12"), Range("B14:H14"), Range("B16:C16"))
' 只檢查最下面三行日期即可。

LastDay = Application.Max(WorkRange)
' 找出最大值。
LastRow = WorkRange.Find(LastDay).Row
LastColumn = WorkRange.Find(LastDay).Column
' 記錄其行列編號。
JobType = Cells(LastRow + 1, LastColumn).Value
' 工作代號就是往下一個儲存格。

MsgBox Cells(2, 4) & "年" & Cells(4, 2) & "月最後一天是" & LastDay & "號; 工作代號是" & JobType & "。"
' 顯示工作代號。
End Sub

2009-09-18 17:19:38 補充:
To 米淇淋,
不好意思!
我試過沒問題才貼出來的。
我再研究研究,有答案再貼上來。

2009-09-18 17:58:25 補充:
我再試了一次之前做的動作,還是一樣OK沒問題。
拿 Dainel 的檔案來試同樣的動作,就出現跟您一樣的狀況,
而且中斷在 LastRow = WorkRange.Find(LastDay).Row 那一行。

初步看了一下,
之前我試的時候,1~31 那些日期是自己敲進去的數字;
而 Dainel 的檔案,日期用公式產生,
若把 Dainel 檔案的 F6 儲存格改成直接敲 1,test() 就OK沒問題了。
應該是這個差別造成的。

你們對! 做萬年曆哪有敲數字的,當然是用公式產生才對!

至於為什麼會這樣? 哪裡出錯? 如何改正?
請容我再研究研究。
2009-09-18 3:43 pm
我部落格有個「輪值」檔案可以參考看看。


收錄日期: 2021-04-27 17:02:59
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20090917000015KK08947

檢視 Wayback Machine 備份