PCZONE 討論區

PCZONE 討論區 (https://www.pczone.com.tw/vbb3/)
-   -- OFFICE 相 關 軟 體 討 論 版 (https://www.pczone.com.tw/vbb3/forum/5/)
-   -   Excel: 怎麼做 (https://www.pczone.com.tw/vbb3/thread/5/5252/)

leonchou 2001-05-25 02:45 AM

Excel: 怎麼做 [班車查詢功能] ?
 
:D 動動腦時間 Part II :D

大家好 !! 洞洞惱時間又來ㄌ~~
(這個板真ㄉ蠻冷ㄉ~~~ 這樣怎麼行ㄋ :D )
(連板主也懶的派ㄌ 一個被冷落ㄉ地方 >< )

這次ㄉ問題是:如何作〔[b]班車查詢功能[/b]〕??

班車查詢 !? 做個班車時刻表來查不就好ㄌ~~
呵~ 如果是這樣 那出這個題目幹嘛 ?
給個範例先:[list][*]已知首班車是 6:30 am 開出, 然後每隔 40 分鐘發一次車,
現在想知道, 下午 5 時左右有沒有車 :confused: :confused:[/list]又是看起來粉簡單ㄉ題目~ (^.^)
裡面包含ㄌ三個時間 看能不能..
輸入相關的數字就能得到 [有] 或 [沒有] 答案.. GO !!!
 
~~唉 三更半瞑睏未去......

rere 2001-05-26 12:41 AM

這個不是用Access作比較好嗎?



leonchou 2001-05-26 12:53 AM

:) 你好~
可是題目就是怎樣用 Excel 做呀
提供不用方向的思考嘛 ^.^

:confused: 不過.. 你可以說說 Access 怎麼做ㄇ :confused:
我也很想知道ㄋ 不好意絲我係 Access 肉腳啦 ^ ^|||
 

蘇才峰 2001-05-26 02:27 AM

[QUOTE]原始作者是 : [i] Leon Chou [/i]
[B]:) 你好~
可是題目就是怎樣用 Excel 做呀
提供不用方向的思考嘛 ^.^

:confused: 不過.. 你可以說說 Access 怎麼做ㄇ :confused:
我也很想知道ㄋ 不好意絲我係 Access 肉腳啦 ^ ^|||
 
[/B][/QUOTE]

嘻嘻嘻嘻,ACCESS、VB..這些都可以很輕鬆的做出來,畢竟這是資料庫的基本功能,把班車時間建立到資料庫,然後把使用者KEYIN的班車時間或某一時間範圍抓到變數中,在去做比對,結果就出來了...
我是說真的喔,因為這種查詢,以前是我的作業之一......類似台鐵那種......:)不過我現在要寫的話,要去看一看才能回想起來。

言歸正傳,要用EXECL做吧,好,一句話......讓我死了吧......:)
不是不是啦,我是說:拜託給我一天吧,因為我今天才看到題目....



蘇才峰 2001-05-26 04:35 PM

真的只能用三個數字,就要得到yes或no嗎?
可不可以先在欄位建立一些基本資料呢?

我是想成一個數字,例如7,然後累加一個數字,例如11,然後由使用者輸入一個數字,例如520,然後看看520再不在這個整數序列之中,但是......嗚嗚嗚嗚,沒有迴圈真痛苦......:)

嗯嗯,讓我在想想.......

leonchou 2001-05-26 06:56 PM

[img]http://pczone.com.tw/vb/images/icons/icon14.gif[/img] 才兄 (sorry,這樣稱呼比較習慣^^),您真是太用功了~~
先說一下,請不要侷限在工作表上思考
畢竟 Excel 的應用很多樣化
解決方案也不是只有工作表函數和內建功能而已
小弟只是想藉由這題目
來帶出 Excel 的另一種應用方式...
Good Luck ~~

P.S. [u]Access[/u] 真的可以三個數字給答案嗎 ??
   在不建立資料表的狀況下...
   i really want to know~ :D
 

蘇才峰 2001-05-27 01:17 AM

[QUOTE]原始作者是 : [i] Leon Chou [/i]
[B][img]http://pczone.com.tw/vb/images/icons/icon14.gif[/img] 才兄 (sorry,這樣稱呼比較習慣^^),您真是太用功了~~
先說一下,請不要侷限在工作表上思考
畢竟 Excel 的應用很多樣化
解決方案也不是只有工作表函數和內建功能而已
小弟只是想藉由這題目
來帶出 Excel 的另一種應用方式...
Good Luck ~~

P.S. [u]Access[/u] 真的可以三個數字給答案嗎 ??
   在不建立資料表的狀況下...
   i really want to know~ :D
 
[/B][/QUOTE]

是喔,害我跑去書局把架上的EXCEL有關函數的書通通拿來看,還異想天開的找財務函數,看看有沒有可以應用的......原來不可侷限在工作表上面思考........*_*

我原本心中有幾個想法,仔細評量,大致決定往下列方向思考:
1.找出等差級數的函數。
2.啟始值就是頭班車的時間,公差就是班車間隔,
3.找出有"逼近"某一個數的函數
4.然後找一個最接近而不大於"使用者輸入的時間"的數。
5.如果這兩個"時間"一樣,BINGO!如果不一樣,既是NO。

不過,遇到好多困難喔,
第一:在"填滿"的數列中,這個就有等差級數,但我找不到相對應的函數......:)
第二:我找不到有"找到最接近而不大於某數"這個功能的函數......:)

喂喂,各位同學,發揮一下同學愛嘛,有小抄記得要傳到後面來啦,順便公布一下你們的想法,不然我又要摃龜囉......:)

蘇才峰 2001-05-27 01:56 AM

>Access 真的可以三個數字給答案嗎 ?? 在不建立資料表的狀況...


嗯嗯,應該三個值就可以了,頭班車時間、發車間隔、使用者輸入的時間,不過要寫回圈,這就好幾行了,原則上和我上面的想法一樣:

1.讀入頭班車時間(start_time)、發車間隔(interval_time)、使用者輸入的時間(user_time)

2.do
3.if start_time + interval_time > user_time then exit do
4.strar_time = start_time + interval_time
5.loop

6.if start_time = user_time then
7.print "yes"
8.else
9.print "no"
10.endif

不過,在ACCESS使用這個,這樣算不算犯規阿......好像太奸詐了說......:)

MS 2001-05-28 10:32 PM

VLOOKUP應該可以吧!
如果RANGE_LOOKUP不設FALSE就可以找到最接近的值.......
如果有設FALSE的話就必須找到完全符合的值

蘇才峰 2001-05-29 12:11 AM

哈哈哈哈,解出來了............:):):)

在只有班車發車時間、發車間隔、要查詢的時間這三個條件下,假設
發車時間是06:20
發車間隔是每格40分鐘發一般車
使用者要查詢的時間是10:20及13:20

1.將發車時間、使用者時間都設公示轉換分鐘,例如06:20就是380,10:20就是620,13:20就是800

2.將查詢時間減去發車時間,在除以發車間隔

3.使用MOD函數,如果剛好整除=0,就表示恰好有班車,YA!,如果不等於0,那就表示沒有班車,OH!NO!

4.核心公式:
IF( MOD((查詢時間-發車時間),發車間隔)=0 , "YA!" , "OH!NO!" )

蘇才峰 2001-05-29 12:14 AM

[QUOTE]原始作者是 : [i] MS [/i]
[B]VLOOKUP應該可以吧!
如果RANGE_LOOKUP不設FALSE就可以找到最接近的值.......
如果有設FALSE的話就必須找到完全符合的值 [/B][/QUOTE]

在有建立"班車時間"的前提下,的確這樣子可以,但是題目說不可已有班車時間表喔,這就是困難的所在........:)

蘇才峰 2001-05-29 12:31 AM

在我想出來的時候,還蠻緊張的,趕緊上網來大喊"『刀!下!留!人!』",生怕答案已經公布了,幸好還沒公布....:)不過出題老師說不要往工作表函數的方面去找,可是往其他方向去找時,腦袋真的空空的,各種下拉式功能表中的選項,各種增益集都試過了,真的還是空空的,真是美中不足,嘻嘻........

我的專長是FORTURN語言,以前常常用到MOD這個函數說,現在竟然都沒想到,唉,歲月真是........不過我在EXECL找到了類似"最接近而不超過某數"的函數,就是MROUND,用法是:
MROUND(A,B)==>EXECL會幫你找到以B的整數倍,並且最接近A的數字出來

例如:MROUND(45,7)=42
==>因為7的整數倍有7、14、21、28、35、42、49...其中最接近45,又不超過45的就是42了。
當然,小數也可以找喔,如果有不明白的地方,請查閱HELP,若出現(!NAME#),請安裝分析工具箱,就在"工具/增益集/分析工具箱"



leonchou 2001-05-29 08:07 PM

呵呵 恭喜你答對了∼ 才兄 :D :D :D
什麼老師不老師的.. 別這樣嘛 大家一起交流交流啦 ^.^
這題有兩個解法:〔工作表函數〕和〔自訂函數〕
自訂函數就如你提到的 Access 程式 只是同樣觀念應用在 Excel~
這個解法你雖然不是正式答題 但仍算你答對啦 c c c

〔工作表函數:MOD〕
現在代才兄把這公式稍加詳細說明一下(才兄請包涵 ^^):
假設 A1、B1、C1 分別是發車時間、發車間隔、查詢時間,
A1 和 C1 以時間格式 (h:mm) 輸入。
則公式如下(真有點給它長 ^ ^):

=IF(MOD((HOUR(C1)*60+MINUTE(C1))-(HOUR(A1)*60+MINUTE(A1)),B1)=0,"Yes","No")

HOUR 及 MINUTE 函數可把時間轉換為[小時]和[分鐘],兩個時間
換算成總分鐘數... 其餘的就照才兄所解釋的了~~


〔自訂函數:TimeCheck〕

Function TimeCheck(start, plus, time)
a = False
Do While start <= 1
If Format(start, "h:mm:ss AM/PM") = Format(time, "h:mm:ss AM/PM") _
Then a = True: Exit Do
start = start + plus
Loop
If a Then TimeCheck = "YES" Else TimeCheck = "NO"
End Function

把上述自訂函數置入目前活頁簿中,使用時於任一空白儲存格輸入

=TimeCheck(Timevalue("6:30"),Timevalue("0:40"),Timevalue("17:00"))

就如同使用一般函數的方式,即可知答案。
當然參數也可以用參照位置,但要注意被參照的儲存格內容必須是【時間】格式。
以上述 A1、B1、C1 為例,B1 需改為時間格式,eg. '0:40' 。

則公式為: =TimeCheck(A1,B1,C1)

這個自訂函數內容與才兄的程式碼略有差異,但有異曲同工的結果∼
就此題而言 自訂函數的解法當然比 MOD 函數麻煩一些,但是呢..
就當作是〔自訂函數〕的應用,不同方式的思考吧 :D :D :D

謝謝才兄~ 謝謝大家~~ [動動腦時間] 下次見囉∼ ^ ^|||
希望有更多的朋友一起來玩喔 :)
 

優客李林 2001-07-14 12:13 AM

時間差
 
假設A1=05:30,A2就輸入所需的時間,方程式如下:
=IF(MOD(HOUR(B2-A2)*60+MINUTE(B2-A2),40)=0,"有","沒有")


所有時間均為 +8。現在的時間是 10:47 PM



 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。