Office 實戰案例分享,做有意義的事情,每天進步一點點,今天比昨天好,這不就是希望麼?
問題:
今天在QQ學習群裡碰到一個同學在尋公式高手,想解決如下問題,即:
![換種思路豁然開朗,這個簡單案例你不止學會幾個函數](http://p2.ttnews.xyz/loading.gif)
如圖這樣一種場景,用什麼公式,可以一直往下拉。B列為計算項,從上往下去加,A列為他預想的計算邏輯。
講正式問題之前,先插點題外話,我們在問問題的時候,最好不要用以這種方式:
“在麼?”
“有沒有大神/高手麼?”
...
1.有問題請直接說問題——快節奏社會,大家時間都比較寶貴,如果沒回答你是不是一直等下去?沒說問題之前誰知道你要幹嘛,回答在會不會有坑
(想起了網上的一個段子說,在吧,你要是找我借錢咋辦?不在吧,你要是請我吃飯怎麼辦?所以,請直接描述問題,我好決定我在還是不在,哈哈哈)
2.大神,高手這種戴高帽的方式有時候會比較尷尬,想回答的人心想我不算大神我能回答麼?回答了錯誤的話那不是白瞎了這個稱呼?真正有實力的也會保持謙虛的態度,也不敢隨便自封大神啊。 這是待人接物裡比較重要的一點,尤其是在互聯網時代。
言歸正傳,回到問題本身。
一、
順著這位同學的思路我們看看能不能解決
![換種思路豁然開朗,這個簡單案例你不止學會幾個函數](http://p2.ttnews.xyz/loading.gif)
B2=B1+D2
B3=B2+E3
...……
依此類推,B列寫公式的話,那麼應該等於上一個單元格的值加上當前行最右邊的值,直接上結論:
公式解析:
1.ADDRESS(ROW(),ROW()+2)
觀察得知,隨著行數的增加,右邊的數字填充是呈現一種規律的。我們可以用row()函數來表示這個變量。而address函數用來返回行列參數代表的地址,如第一行的話, ADDRESS(ROW(),ROW()+2)=$C$1。
2.INDIRECT(ADDRESS(ROW(),ROW()+2))
地址本身只是個符號,要想參與運算,必須套個indirect函數,這個函數的作用是將地址字符或者名稱轉化成其代表的數據區域。
3.B2=B1+INDIRECT(ADDRESS(ROW(),ROW()+2))。
從第二行開始累加,相對引用模式,隨著下拉會自動加上一個單元格。
二、
雖然問題解決了吧,但是總感覺這個邏輯有點怪怪的,經過觀察我們發現,B列的值可不就是等於每行其右邊有數據列的值之和麼?
如果是這樣的,那麼公式就很簡單了:
B1=SUM(C1:XFD1),下拉填充即可。
其中XFD代表Excel的最大列數的列標籤(這裡演示用的Excel-2016,第16384列)
三、
隨後被告知,其實右邊是有其他數據的,不能那樣計算一整行,那又該怎麼辦呢?
大不了我限定住這個列數唄,直接上公式:
公式解析:
1.OFFSET(C1,0,0,1,ROW())。
我們用offset函數取得計算區間,這個區間是動態變化的,隨著行數增加而列數不斷擴展,我們就可以以C列的數據為基準,起始點行列不偏移,然後第三參數取1行,第四個參數列數隨著行數遞增的,這裡用ROW()來取值。
2.SUM( OFFSET(C1,0,0,1,ROW()) ).
外面套個sum函數用來計算這個區間的值進行求和即可以得到最後的結果了,是不是比(一)的方式要簡單直觀多了啊。
這是屬於從另外一個角度看問題,從而可以簡化我們的公式的切入點,平時我們見到不同的需求有很多不一樣的公式來求解,就是因為入手角度不一樣,導致解決辦法不一樣,但是隻要能解決問題,甭管白貓黑貓,能抓老鼠的貓就是好貓,不是麼?
講到這裡,我們的問題算是解決了,有沒有同學好奇,那右邊這個階梯型的遞進系列的數據是怎麼來的啊?能用公式拉出來麼?
這個不難,跟乘法表的原理是一樣的。
總結 :
今天通過一個簡單的例子,讓我們學習到了很多的函數等知識,同時也認識到換一種角度看問題,有時候會簡化我們的解決過程。
文中提到的幾個函數,如果還有不是很清楚用法的,建議私底下去補強,因為這都是一些很常見的很重要的函數。
- address
- indirect
- row/column
- offset
這裡需要多說一點,很多人求解問題,巴不得別人能夠直接給出答案,他複製粘貼就能用最好,其實我個人非常不建議這種做法。要想進步,要想成長,你必須 擺脫"巨嬰"思維 。
所謂 "師傅領進門,修行在個人 ",我們在不會尤其是思路打不開的情況下,尋找所謂的大神、高手去幫我們點撥、啟發一下思路還是很有必要的,可以節省大量的時間,少走彎路。畢竟如果你的認知有限的話,你甚至都不知道要怎麼問問題,要如何去查找。
當你已經得到了指導後,你一定得花點時間去驗證實踐一下,一些簡單的基礎的問題你務必要想辦法自己弄懂,畢竟一個百度就能解決的問題,讓別人從頭開始給你手把手的教,你卻不去努力自己搞清楚,這不是一個正確的學習態度。不然你下次碰到類似的問題,你還是不清楚,你又去找大神?別人的時間說不定更寶貴呢?
自己融匯貫通掌握了的才是自己的知識!
喜歡的請關注|收藏|點贊|轉發|評論吧,刻意練習,並獲得正面反饋是精進成長的必要法寶,而你的互動將有助於你我共同的成長,謝謝!
————
運營:Excel365
閱讀更多 天天Excel 的文章