~工作簡化,不再是難事~

2016-11-18

〔EXCEL〕INDIRECT,不可不知對欄位的"兇器"…更正…"利器"啦~

這又是一篇從舊部落格搬過來的…
當然原因有三…
一、這個函數其實非常有用,但多數人並不清楚。沒有它,一樣可以用最原始方式使用,但有了它真的是事半功不知幾倍。
二、前二週給一個學生上課,其實從頭到尾就在講這個函數←可見真的能應用到
三、剛剛有人在我舊部落格留言→可見真的有人在查詢

哈哈!廢話不說了…再讓我上堂偷懶的舊課吧!

今兒個某位學員在製作記帳總表…因為要把每月結餘金額連結帶到總表…
必需一個個寫入「='1月'!BN6」、「='2月'!BN6」…一路寫到12月…再改第二列

依他的總表,至少需對應400個以上的欄位…這的確是件辛苦的事情~

老師佛心來的~當然,交情不同咩~一句"傳來"~
只要利用INDIRECT這個函數…可以簡單的讓欄位名稱(例:'1月'!BN6),成為一個字串帶入…
大家知道,"字串"這個東東,代表你可以隨心所欲的用規則去產生…

所以你可以產生欄位位置的字串…再例用這個函數去取得該欄位的"值"



作法及原理:
INDIRECT(欄位位置字串 , (真)位置判為A1的格式 / (假)位置判為R1C1的格式)

A1的格式:就是我們常見欄位位置的表示方式,例如A1、B1
R1C1的格式:以「列數+欄數」為表示方式,例如R2C3代表第二列第3欄…就是指C2囉~

《1》總表 C2裡函數要對應的位置是「'1月'!BN6」…月份我們可以例用C1的值來產生…其它的部份就直接加上雙引號,讓它變成字串即可
="'"&C$1&"月'!BN6"

《2》將欄位位置產生字串的計算式帶入函數裡…就完成了「一月份當月總計[薪資]」的對應囉
=INDIRECT("'"&C$1&"月'!BN6",TRUE)

直接將一月份薪資總計的計算式(C2)…複製到其它月份(D2:N2)…就完成囉!
其它列的對應,比照此模式~

就可以有效的把400次,減為30次囉~~
Read More

2016-10-28

〔WORD〕如何避免微軟正黑體行距過大


Word在製作一些規格文件時,排版功能相當好用…
當然…前提是你真的有使用到其樣版本設定…

由於我個人偏愛使用「微軟正黑體」來當預設文章字型,但碰到的困擾就如上圖,行距過大…
整個空間使用及編排似乎就有些浪費及不美觀了…

要解決這個問題,其實只要將文章段落設定裡的「文件格線被設定時,貼齊格線」功能取消即可。

若使用設定固定行高的方式來解決…在貼圖檔或改變字型大小時…因行高限定,反而造成無法自動編排的困擾~

給有使用Word的學員參考囉!
Read More

2016-10-04

〔EXCEL〕如何讓儲存格依據條件"自動"變色(格式化條件&網路提問)

以下是我在舊的部落格開的課…沒把舊課程搬到新的部落格…
為何會把這篇搬過來…我發現格式化條件在應用上,的確是多數使用者的需求,而且也有明顯的幫助…
提問也較多…
對於過去未回覆的提問,說聲抱歉(因為我沒去維護該部落格很久很久很久了,哈哈)
拉來這裡回覆好了…能看到是緣份…>"<

--------------------------------------------------------------------------------------------------------------------------------

相信很多人在建立或維護Excel資料時…常常為了凸顯某些特定的資料而使用"顏色"來做分類標示。

這是一個很好的方式,也讓你的資料更容易辨識,也顯得更專業些!
(不過,千萬別弄得花花綠綠滴,反而失去了焦點)

不過如果你要凸顯的資料是有特定條件的,例如金額大於10,000元,用綠色來標示;小於10,000元用紅色。你會怎麼做?
一筆一筆看…然後逐筆更改文字格式或儲存格底色嗎?
那下次金額更改時,又要手動調整一次?

今天我們要上的課,就是教你如何讓Excel自動幫你變更顏色~
一起來讓Excel幫你做事吧!!別讓它閒著了~

〔格式化條件〕

範例:業務員業績若大於等於業績目標,業績欄位更改為綠色,若未達目標,欄位改為紅色












分析:需要B3~B7的儲存可與B1的目標來做比較,>=B1則更改底色為綠色。<B1則更改為紅色。

作法:
《1》我們先在第一筆資料(B3),設定〔格式化條件〕

點選〔設定格式化條件〕→〔新增規則〕,會開啟以下視窗:


規則類型有非常多的選項,老師最常用的就是最後一項<1>〔使用公式來決定要格式化哪些儲存格〕,因為這一項大概就可以解決95%的問題,而剩下的5%問題…我想,你我要遇到的機率都非常的低~~(基於腦容量永遠都不夠的限制條件,只要學最常需要的即可)

《2》選取後,就會跳出格式化的公式輸入區,點選<2>




在格式化規則裡,輸入  =$B3>=$B$1
這裡要輸入的就是你要改變顏色的條件,複習一下題目:業務員業績($B3)若大於等於(>=)業績目標($B$1),業績欄位更改為綠色


◎各位有沒注意到,儲存格欄列前老師有放上$這個絕對位置符號。這個很重要,有概念的學員就先試吧!因為這個要說明…實在是又得開一堂概念課了!!這裡就先暫時跳過去吧!
但業績目標,因為每個業務員要比對的目標,都是B1這個欄位,所以請務必打成$B$1喔~


◎另外有沒有人很厲害,注意到條件中有個顏色特別不一樣的…是的,就是那個=,這個是一般人在設定絛件時,很容易常漏掉的。記得"條件前"還要加"="喔!




《3》條件設好就來設定格式囉~ 

























大夥兒看到這裡可以設定的,都可使用喔!包括字型的顏色、大小等,儲存格框線(老師常常用這個請Excel幫我畫框線,因為我太懶了),儲存格底色。

●●到這裡…我們就已將第一個格式化條件設好了!!給自己鼓勵一下~~
    第二個條件:業務員業績($B3)若小於(<)業績目標($B$1),業績欄位更改為紅色
    就當練習實作的功課吧!重覆《1》~《3》的動作,再設定一次!

如果你完成了…千萬別以為結束了喔!!因為目前只設定了B3這一個儲存格的格式化條件…別忘了我們的業績欄位是B3~B7


《4》〔設定格式化的條件〕→〔管理規則〕:我們來針對剛剛設定的條件,把適用的範圍加上去。





在〔套用到〕的設定裡,預設都=$B$3。請直接將它改為=$B$3:$B$7

◎套用到這個功能,是在MSOffice Excel 2007版以後才有的喔!如果是之前的版本,最多只能設3個格式化設定。而且適用的範圍只能用儲存格格式複製過去(這時就考驗你寫條件的絕對相對位置的功力…嘿嘿)

做完這一步…你會發現…耶~~格式自動改變了喔!











放鞭炮~~~這麼長的課程…都快睡著了!!下課~~~


提問A. 您好,想知道有可以使用在字串資料上的條件格式嗎?謝謝。
回答A. 若用公式判斷,只要能寫得出判斷式,不管是字串、數字甚至if等函數判斷式,都能拿來加以應用。

提問B. 老師,請問您~ 我若要設定數字等於0時變成空白可以嗎??
回答B. 其實若想讓結果等於0時輸出空白,用if判斷式就可達成。但若想用格式化條件…或許你可以考慮若數字等於0時,讓字體顏色變白色(跟底色一樣),這樣其實視覺上也是一樣的(有時結果若也要拿來給其它欄位做使用時,想保留原本的值,這就是方式之一囉)

提問C. 老師,請問,如果要寫下一欄>上一欄變紅,下一欄小於上一欄變綠,用這個方向,好像不太對,請問要怎樣寫呢?謝謝老師
回答C. 其實用格式化條件是對的囉…只是你必需拆成2個條件…格式化條件是可以有多筆的。
第一個條件…=A2>A1,變紅
第二個條件…=A2<A1,變綠
而條件的順序是有影響的喔!Excel會由上而下判斷條件,每個條件最後有一個選項(如果True則停止,預設是沒勾選),在沒勾選的情況下,第一個條件成立,第二個條件也成立的話,第二個條件所設定的格式會蓋過第一個條件喔!
當然需不需要勾選,完全看您的需求及條件怎麼設來決定…就像您目前的條件並沒有處理當A2=A1時,格式是否要變動囉。

提問D. 您好,請問可以設定欄位數字的未五碼顏色嗎?
回答D. 這個單用函數及格式化條件,似乎不太可能達到。至於用VBA…我也還真沒試過…

提問E. EXCEL字體顏色原本可以顯不同顏色,不知動到什麼,就都只有黑色,儲存格填色也是,請問是哪裡的設定被動到了?謝謝!
回答E. 嗯!這個問題沒看到原始檔案,很難判定是哪裡出問題呢!

提問F. 您好!如果我想將指定的儲存格條件設定為,連3或以上的倍數,有關儲存格的字體轉變為紅色,不知可以怎樣做到?
回答F. 您可判斷該儲存格的值是否為3的倍數即可。怎麼判是是否為3的倍數,可以利用除以3的餘數是否為0來判斷。
=MOD(參照儲存格,3)=0
MOD範例:mod(10,3)=1,mod(9,3)=0

提問G. 老師,請問如果我要設定A1,B1不一樣時,表格會自動填滿顏色
回答G. 您可在要變色的表格欄位內,加上=$A$1<>$B$1,套用到該表格的所有欄位範圍即可喔!

Read More

2016-09-14

2016-09-08

提問單〔Access〕:將日期加上指定的年區間的應用(iif / isnull / DateSerial / DateAdd )


如果您有一份資料表中,有2個欄位如上
想要在查詢表或表單中,增加一個欄位,內容為[基準日期]+[年份],要如何處理?

在撰寫運算式時,要注意其中[基準日期]有可能是空值,運算式在若遇到沒有日期的情況,就不進行加總年份。

所以,我們依以下兩個階段將運算式完成
A. 判斷是否[基準日期]為空值
B. 非空值時,我們要將[基準日期]加上[年份]得到我們想要的日期

首先,我們如何判斷日期為空值呢?
通常我們判斷字串為空值都使用 空字串"",但日期的格式則為null,所以可以使用以下函數來確認

  • isnull([基準日期])

若為空值則回傳true,有值則回傳false

再來,如何將日期做加減呢?日期函數很多種,都可以達成加減的目的,可以例用以下2個函數來做


  • DateAdd(增加類別, 增加量, 日期)

例如:DateAdd("yyyy",[增加年份],[基準日期])
            DateAdd("yyyy", 2 , 2016-09-05) → 2018-09-05

ValueExplanation
yyyyYear
qQuarter
mMonth
yDay of the year
dDay
wWeekday
wwWeek
hHour
nMinute
sSecond
或是您可以自已計算年、月、日,再組合成日期格式
  • DateSerial(年, 月, 日)
例如:DateSerial(Year([基準日期])+[增加年份], Month([基準日期]), Day([基準日期]))
            DateSerial(Year(2016-09-05)+2, Month(2016-09-05), Day(2016-09-05))
            →DateSerial(2016+2, 9, 5)→2018-09-05

這些運算式寫好時…就來做判斷的組合了…又要用到經典函數了
  • iif(判斷式,成立,不成立)
在Excel中函數為if,Access多了個i喔~iif...千萬別寫錯囉~

我們來完成這個判斷吧!
=iif(isnull([基準日期]),"",DateAdd("yyyy",[增加年份],[基準日期]))

您,組對了嗎??

Read More

2016-08-31

〔EXCEL〕自動編固定長度的流水號:公式/格式設定/自動填入


這篇文發想源自於我一個學長在FB上的分享…

在Excel中,若想產生一個流水序號,最簡單的方式就是寫一個公式(如上圖B欄)
=A2+1
將上一個儲存格的數字加1,即可得到新的流水號

但問題來了…Excel在判斷此值會自動判定為數字…所以會呈現1、2…10、11、12…
如果,希望流水號呈現固定碼位時(例如3碼,001、002…010、011、012…),要如何處理?

只要將儲存格改成文字格式,並設定顯示Format為補零3碼即可,有以下2種方式處理
A.  在公式內加入轉文字的函數…(想習慣使用公式的學員可利用這方式來處理)
      =TEXT( 值 , 顯示格式)
      =TEXT( A2+1, "000")

其中顯示格式"000",代表以數字3碼顯示,前面補0

B. 直接修改A欄的格式設定(其實作用跟A相同,只是一個寫公式,一個改設定)
     如上圖「儲存格格式」設定,類別改為「自訂」,並將類型設定為000即可

當然啦~~如果…你完全不想寫公式…
也可在填入'001(若要打文字,在前方加上 ' 即可)後
將滑鼠移到儲存右下方…當滑鼠變成實心+號時…按著往下拉即可直接複製流水號了…
但如果您實心+號往下拉,結果只是複製原值(例如全是001)…請同時按著Ctrl往下複製即可
(至於什麼時候該按Ctrl,什麼時候不用按…我想您直接試一下就知道了…原理跟儲存格式複製模式有關,這就不特別說明了…因為按按就知哪個行…不用太深入了解,腦袋記憶體很珍貴)



Read More

2016-08-24

〔EXCEL〕用函數取出指定規則的字串~手動"資料剖析"變形版


當你有一大"篇"一連"串"的資料,想要將其依一定的原則切割成不同的欄位
在Excel中有個很好用的功能--『資料剖析』
可以很輕易的協助您分割資料
(怎麼做不是這篇的重點,在此就不說明了)

但如果你想切割出的資料,取出某個欄位。但它被切割出來的位置可能有些不同(喔喔>"<)
例如:
A , , B , C
A , B , C
A , B , , C

用『,』來做資料剖析會切出

如果你想取的是B或C的資料…卻發現它不在同一欄中…
或許,你可以改用函數去計算取出你要的字串唷~

以最上方那張圖為例…
如果想取出每列g_後的字串
我們可以找到其規則:
1. 每列只會有1個g_
2. 字串用"g_開頭,而結束於另一個" (也就是說只要取畫面中藍色底的字串)

可依此決定做法
A. 先找到每列g_開頭的位置→→結果寫入J欄(開始位置)
B. 找到g_開頭後"的位置→→結果寫入K欄(結束位置)
C. 這樣你就知道要找的字串是從哪段了吧

講完了思考出的作法…再來就是實做了。

●如何找到"完整字串"中的"指定字串"開始的位置?
=FIND(指定字串, 完整字串, [開始尋找的位置])
例如:
=FIND("CD","ABCDEFGFECDBA") →→3  在ABCDEFGFECDBA,找CD第一個出現的位置
=FIND("CD","ABCDEFGFECDBA",4 ) →→10 在ABCDEFGFECDBA,從第4個字元開始找CD第一個出現的位置

課後練習:
=FIND("CD","ABCDEFGFECDBA",3 ) →→??

●如何取得"完整字串"中指定位置的"字串值"?
=MID(完整字串, 開始位置, 取幾碼)
例如:
=MID("ABCDEFGFECDBA", 3, 2) →→CD 從ABCDEFGFECDBA第3碼開始取2碼字串
=MID("ABCDEFGFECDBA", 3, 4) →→CDEF 從ABCDEFGFECDBA第3碼開始取4碼字串

課後練習:
=MID("ABCDEFGFECDBA", 3, 20) →→??


後記:
其實寫函數、寫程式…並不難。重點在於你想寫什麼…想怎麼寫…先搞清楚後…再動手吧!
Read More

2016-08-21

〔EXCEL〕IF,假如你不會用…小心落伍囉~( Lesson 1/1)

轉載 章老師的舊部落格 http://scenic0327-tek.blogspot.tw/2012/07/excelif.html

在職場上應用Excel,除了基本的加減乘除外,最常碰到一個問題,就是"判斷"~~

如果金額>多少,該怎麼處理,不是的話該怎麼處理?
如果除數是0,值應顯示什麼,不是的話就正常除即可←可以避免除數是零的錯誤產生。

如果…是的話…不是的話…
這類問題太常出現了,但若你不會用函數來處理,通常的結果就是讓錯誤在Excel表上顯現,然後再用人工的方式去修正掉。

所以我們今天來上一堂簡單的課~教會你如何應用基本的判斷式。


題目:在B1輸入章老師的年紀,如果30歲以下(含),就說章老師青春無敵。但如果章老師大於30歲,就說章老師熟女風情。反正說好話每日一善無妨,實際年齡的話…要找也粉容易滴!

分析:這個問題就很單純,一個判斷而已…
            章老師年紀    >30    →章老師熟女風情
                                    <=30  →章老師青春無敵

解法:

=IF(B1>30,"章老師熟女風情","章老師青春無敵")
↑你可以把函式直接copy到Excel中貼上,就會看到結果囉! 

作法及原理:
IF(條件 , (真)條件'成立'的顯示 , (假)條件'不成立'的顯示)

《1》我們的條件是什麼,就是章老師的年紀。至於章老師的年紀,是看B1的輸入值來決定。
我們來判定B1的值是否大於30
=B1>30

《2》當《1》的條件成立時,代表的是章老師已年過30了…所以要顯示"章老師熟女風情"。但是如果不成立呢,就必需顯示"章老師青春無敵"。所以把這兩個字串分別放入(真)與(假)的位置即可。
=IF(B1>30,"章老師熟女風情","章老師青春無敵")

IF其實非常簡單是吧!但它的應用卻可以很廣泛。
例如(真)與(假)的部份,不是只能帶"字串"喔~你也可以再加上另一個IF判斷式啊~
試一下吧!

回家作業:
請寫一個判斷式
假如章老師年紀0~20,顯示"活潑可愛"
                            21~40,顯示"小資女孩"
                            41以上,顯示"風韻猶存"
試一下喔!
Read More

〔EXCEL〕IF的延伸課程…多個範圍間的判斷~~

上一堂課 【Excel】IF,假如你不會用…小心落伍囉~( Lesson 1/1)
我們知道可以用簡單的IF判斷將一件事,分為"成立(真)"或"不成立(假)"
這是一個非A即B、非黑即白的結果…
你若不支持,那就是反對…(耶…扯遠了)

複習一下
IF(條件 , 成立-真 , 不成立-假)

但我不止一次碰到學員問我…那如果是好幾個範圍怎麼寫呢?
例如:
0~10,則為A
11~20,則為B
21~30,則為C

或是:
若<=10,則為A
若>10且<=20,則為B
若>20且<=30,則為C

上面這2種敘述,基本上是同一個問題(你發現了嗎?)

這種狀況…您可以用槽狀的IF判斷式來處理唷~~
什麼叫槽狀的…簡單來說就像下圖…大圈圈包小圈圈…一圈圈包下去…
看你想包幾層,只要函數字串長度不要超過Excel可容許範圍就行~

那您該怎麼將判斷式套用進去呢…化繁為簡,就一句句套~~

確認每句的判斷式都是正確之後…再整個組起來即可(不成立三個字被下面的判斷式取代)
=IF(A1<=10,"A",IF(A1<=20,"B",IFA(A1<=30,"C","??")))

組判斷式並不難…只要先拆分好再組起來就行了唷~~


Read More

2016-08-19

〔EXCEL〕表格設計說~~利用Excel套表格式建議

Word、Excel是我們經常拿來製作表格的工具…
這兩個應用軟體的強項不同…

對我而言,Word具備很強的樣式/格式設定及邊界觀念,在填入內容時的版面控制相對輕鬆。
而Excel則具備強大的運算,本身就是一個具大的表格任你使用…

所以在製作套表時,應以表格使用功能角度去選擇…

在此分享一下我利用Excel製作表格的其中一個小技巧(使用Word時我也用這樣的概念)…




為做這個套表的目的,是為了依據來源的資料,讓Excel自動產生銀行的匯款單(印出來就跟你去銀行填的一樣)。
這個作法可以讓原本人工一張張填據或修改內容的作業,變成自動化。由Excel自動產生並且切分不同的檔案,同時存檔讓您資料被保留下來。
一個人力修改4個小時的工作,可以變成1分鐘電腦轉製+5分鐘人工列印吧(由於跟錢有關,所以不做直接列印的部份)

好了…好像有些離題了…

一般我們在繪製表格時,因表格內格子可能有大有小…很多人都會將儲存格依據需要而拉大…
今天要分享給大家的剛好相反…

善用"合併"儲存格

合併有什麼好處?

  1. 未來格式有調整時,只要解除某欄列之合併儲存格,再依需求合併即可,不會影響到其它列的大小。
  2. 每個欄位寬度間有個"比例"關係在,整個視覺效果也會比較協調,表格專業度會提升唷~
  3. 在預估內容不會超過整個範圍時,甚至可以連合併儲存格的動作都免了。


因此您看這張匯款單的表格,一開始我就直接拉了45欄,直接縮小欄寬到適合放入一個勾選框□的大小。
接著就開始照需求要的位置,把欄位標題都填進去。
滿意後,再進行欄位合併,調整字的位置並繪製框線。

很快的,一張套表格式就完成了…而且美觀度通常比拉寬產生非比例性的大小來得舒適唷~
這方式我在Word畫表格也如此,開始就分割個10、20欄等…再來合併…絕對賞心悅目~


Read More

2016-06-14

〔ASP.NET〕利用按鈕Command呼叫特定程式 / CommandName&CommandArgument Code Behind OnClick

不管是Button or LinkButton...皆有CommandName & CommandArgument屬性,可產生各別Click事件去傳遞值
若同一頁面上之Button皆有相同的行為,則可設定其OnCommand屬性來連結後端觸發事件,並利用CommandName & CommandArgument來傳遞設定值

例如:
前端程式碼
<asp: LinkButton ID ="lkb01" runat ="server" OnCommand ="FuncGo" CommandName="R1_001"></asp :LinkButton>


後端程式碼
Protected Sub FuncGo(sender As Object, e As CommandEventArgs)
    Select Case e.CommandName
        Case "R1_001"
            'do somthing
        Case Else
    End Select

End Sub
Read More

〔ASP.NET〕Page事件發生先後順序 / Page.Load,Master.Load

  • ●一般情況下:

Page.PreInit
Page.Init
Page.InitComplete
Page.PreLoad 
Page.Load 
控制項事件(例如:Button.Click、TextBox.TextChanged...)
Page.LoadComplete 
Page.PreRender 
Page.PreRenderComplete
Page.Render
Page.Unload


  • ●使用了 MasterPage 情況, MasterPage 與 ContentPage 事件順序:


ContentPage.PreInit
Master.Init 
ContentPage.Init
ContentPage.InitComplete
ContentPage.PreLoad
ContentPage.Load Master.Load 
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender 
ContentPage.PreRenderComplete

Read More

2016-06-07

〔VBA〕 取得Excel選取的範圍列(不需連續) / Seletion.Areas Rows

範例:依據目前工作表所選取的範圍,顯示所有列號

Private Sub PrintTSF(ByVal savePath As String)
    Dim FB As Workbook: Set FB = ActiveWorkbook     '目前活頁簿
    Dim FS As Worksheet: Set FS = ActiveSheet            '目前工作表

    Dim xArea As Range
    Dim i As Integer
    Dim iRow As Integer
    With FS
        For Each xArea In Selection.Areas
            For i = 1 To xArea.Rows.Count
                iRow = xArea.Rows(i).Row            '一筆筆取得選取的列號
                MsgBox iRow
            Next
        Next xArea
    End With
    Set FB = Nothing
    Set FS = Nothing

End Sub
Read More

2016-06-06

Popular Posts

Copyright © 2016 Scenic's BOX. 技術提供:Blogger.