大家好,我是廖晨,就是那個即知書山徑,尋得學海舟的小胖子。
一次在課上有學生提問到:老師,怎麼才能學好Excel呢?
我:其實總結起來字不多,兩個字「偷懶」。
剛想解釋為什麼是這兩個字,就被一個搗蛋鬼學生搶問:老師,我就很懶,特別是上課的時候,總想睡覺,按理說,我應該學的最好?可是,我怎麼還是學不會呢?
學生們都笑了,這時心裡說:又是他,怎麼他總能把課堂搞的跟聽相聲一樣。
強壓思緒,不慌張的說:杜子生問的好,這也是我正要說的,偷懶,不是上課睡覺就學會了,而是要在做的事上,學會偷懶,比如別人用做這件事,需要操作5次,你做,只需要一次......。
杜子生:老師,你這麼說,太籠統,我不明白呀。我這正好有張表,你看看,該怎麼偷懶啊?
01初型
說著,我接到一個表格文件,打開一看,是個合併求和的表格:
我正想說,這個例子,我回去研究一下,下節課再講如何"偷懶"?
杜子生:老師,你看好了嗎?快給我們講講吧,你別跟我們,就麼個小案例,還需要回去想想啊?哪多沒有面子啊?
我這時候有點慌了,這要是講不出來,是不是太丟人啦?正在這時,突然撇見求和公式,有了點兒思路,咽下口水說:確實不是太難,下次還不知道,不過需要5分鐘,分析一下,你們先複習上節課講的內容!
杜子生:好啊,哪我給你計時啊,到了我叫你!
02分析
先看了求和單元格D2的公式:
=SUM(C2:$C$10)-SUM(D3:$D$10)
直觀的從公式整理出3點:
1.SUM(C2:$C$10)開始單元格與D2同行,SUM(D3:$D$10)開始為D2的行數加1;2.結束單元格行數相同(為數據中求和數字的行數)3.兩個公式中的單元格相鄰列這些能分析出什麼呢:如果用row()和column(),函數該如何書寫公式?這樣是不是就可以寫出通用公式?
正想這兒,杜子生:老師,好了沒有啊,時間到了啊,都快要下課啦。
我:嗯,哪我就開始了,可能講的有點快,你可系好安全帶啊。這個例子中,要想偷懶,需要編寫出通用公式,這個通用公式跟之前我們學過的獲取行號和列數的函數有關,哪杜子生,你來回答一下,這兩個函數是什麼,以及怎麼用吧?
杜子生:什麼行號和列標啊?還有函數?不過話說回來,要是我都知道了,我就是老師啊?
我:你不知道啊?先站會兒吧,哪就聽聽別的同學怎麼說?有誰知道的嗎?
當我看到有很多人據手時,還是很欣慰的,哪就薛仲春來說一下吧。
薛仲春:row()獲取參數行號,COLUMN()獲取參數列數,參數為引用單元格地址或範圍,可以省略,省略返回當前單元格的行號或列標。
我:沒錯,很好,坐下。杜子生,聽清楚了嗎?
杜子生:嗯,那這個」偷懶」有關係嗎?
我:當然,你坐下吧,好好聽課。其實通用公式沒有那麼複雜,只要找到和當前表格的對應關係,就能寫的出來;若還在D2錄入公式,分別用ROW,COLUM來表示這個引用位置該怎麼寫呢?
03求解通用公式:
公式中的C2其實就是行號相同,列數減1,用公式表示:
行號:ROW(),列數:COLUMN()-1;列數轉列標的方法很多,今天我就用CHAR函數處理,我們知道大寫的英文字母A-Z,在ASCII表中的位置為:65-90。
因為字母A=CHAR(64+COLUMN(A1)),所以C的列標在D2的公式為
CHAR(64+COLUMN()-1)=CHAR(63+COLUMN());C2字符串在D2中的公式為:CHAR(63+COLUMN())&ROW();
C10字符轉成公式為:CHAR(63+COLUMN())&10,其中10為整列非空單元格總數;要求C列非空單元格個數,先有C整列引用地址:C:C,字符串公式:
CHAR(63+COLUMN())&」:」&CHAR(63+COLUMN());再用INDIRECT包括轉化成引用範圍,用COUNTA統計個數就行了。
統計的公式:
COUNTA(INDIRECT(CHAR(63+COLUMN())&」:」&CHAR(63+COLUMN())))SUM(C2:$C$10)的通用公式為:
SUM(INDIRECT(CHAR(63+COLUMN())&ROW()&":"&CHAR(63+COLUMN())&COUNTA(INDIRECT(CHAR(63+COLUMN())&":"&CHAR(63+COLUMN())))))
同理可得D3的字符串公式為= CHAR(64+COLUMN())&ROW()+1;
D10的公式=CHAR(64+COLUMN())&10(數字公式同上)
SUM(D3:$D$10)的通用公式:
SUM(INDIRECT(CHAR(64+COLUMN())&ROW()+1&":"&CHAR(64+COLUMN())&COUNTA(INDIRECT(CHAR(63+COLUMN())&":"&CHAR(63+COLUMN())))))
04驗證:
當上面的公式組合好填入D2,結果相同,但拖拽填充時,提示「若要執行此操作,所有合併單元格需要大小相同」;
杜子生:老師,通用公式求好了,怎麼啦?不會用嗎?哪你這講了半天不是白講了嗎?
我心說:要是折在這,其不更丟人啦,既然這個表能做出來,肯定有方法填充公式,這肯定不是一個一個填充,不妨試試批量填充公式CTRL+ENTER方法,實在不行再到網上搜一下!
心裡有了主意後,穩了口氣說:杜子生,問你問題,你沒有話,一遇到這事啦,你就來勁兒了,是嗎?
杜子生:老師,不是來勁,我是替你著急啊,你看再十幾分鐘都下課,要不實在不行,您就說,下節課講也沒有問題!
我:當然不用下節課講啦,這點小問題,還不至於。
我提聲問:之前我講過,選中一個單元格引用區域有幾種方法?你們還記得嗎?
有的說:滑鼠拖拽:選中開始單元格,按下滑鼠左鍵不放,一直拖拽到結束單元格,再鬆開滑鼠完成;...
有的說:名稱欄輸入法.:單擊名稱欄,直接輸入引用範圍後,回車..
我:挺好,都還記得,我就用滑鼠拖拽吧。一邊操作,一邊心裡祈禱:」神啊,一定保佑成功,要不太丟人啦「。
1.選中D2:D10;2.點擊編輯欄(確保公式處於編輯狀態),後CTRL+ENTER;
終於成功了,一看結果跟原來的結果一樣,心裡總算鬆了一口氣。
杜子生:老師,你這不費事嗎?你花了20多分鐘,弄了通用公式,我又記不住,還不如用原來的公式呢?
我:確實,讓你記住點東西,簡直比登天還難,不過即便記住,再輸一遍也很麻煩,我這到有個方法,建議你們整理一個文本文件,將你自己製作的通用公式存到裡面,什麼使用,再粘貼就是行,方便快捷。
05升華成組件
杜子生:老師你騙人,這哪是偷懶啊!我看應該叫勤奮 差不多,你要是不行,就別說大話,還以有啥妙招呢?
我:我看整個班裡,回答問題的時候沒有你,閒話到一大堆,這樣吧,我要是有法了怎麼辦?沒有法你又想怎麼著啊?
杜子生:我也不欺負你,有巧法了,我以後你叫我做什麼不含糊,要是沒有啊,呵呵,我上課在不打擾別人的情況下,愛幹啥,幹啥?你就別管我就行。
我心說:好小子,原來憋著壞,今天非收拾收拾你不可:行啊,一言為定,要是耍賴呢?
杜子生:放心,我比你有信用,反正離下課還剩10來分鐘,到時候,你別不認帳就行了。
我:你說話算話就行,這個方法用不了10分鐘,就是將通用公式定義為名稱sums。
點擊公式->定義名稱按鈕,彈出名稱定義窗口,名稱輸入SUMS,在公式部分輸入:=EVALUATE(SUM(INDIRECT(CHAR(63+COLUMN())&ROW()&":"&CHAR(63+COLUMN())&COUNTA(INDIRECT(CHAR(63+COLUMN())&":"&CHAR(63+COLUMN())))))-SUM(INDIRECT(CHAR(64+COLUMN())&ROW()+1&":"&CHAR(64+COLUMN())&COUNTA(INDIRECT(CHAR(63+COLUMN())&":"&CHAR(63+COLUMN()))))))
定義完名稱後,當前工作薄再遇到合併求和時,需重複圖3的操作,只需把錄入公式替換成自定義名稱,後ctrl+enter即可。
我:只需輸入簡單名稱,是不是簡便很多呢?杜子生,你覺的呢?
杜子生:老師,反正都你說了算,我又不懂,你說簡便就簡便吧。
我:哪你說話要算話啊,哪我就給你留第一個任務,把我上課的內容,整理成,聽課筆記,下節課前給我,我要檢查不合格,你就重新整理,直到合格位置,你聽清楚了嗎?
杜子生:只有我嗎?哪其它的作業是不是就不用寫了?
我:想的美,除了聽課筆記,其它的作業,該怎麼還怎麼寫,你可是男子汗,說話要算話。
這時下課鈴響了,我留完作業,整理好教材,出去的時候,回頭看了一眼杜子生的位置,看到一群學生圍著他,都衝他豎著大拇指,他笑的哪叫開心!
我心想:怎麼回事,他輸了怎麼還笑的哪麼開心,有什麼地方不對?哦,我明白了,下節課,你給我等著,看我怎麼收拾你!
好了,今天的故事就到這了,希望你能從中有所收穫,喜歡我就關注、點讚加轉發。紙上得來終覺淺,躬行才知有乾坤。