換種思路豁然開朗,這個簡單案例你不止學會幾個函數

Office 實戰案例分享,做有意義的事情,每天進步一點點,今天比昨天好,這不就是希望麼?

問題:

今天在QQ學習群裡碰到一個同學在尋公式高手,想解決如下問題,即:

換種思路豁然開朗,這個簡單案例你不止學會幾個函數

如圖這樣一種場景,用什麼公式,可以一直往下拉。B列為計算項,從上往下去加,A列為他預想的計算邏輯。

講正式問題之前,先插點題外話,我們在問問題的時候,最好不要用以這種方式:

“在麼?”

“有沒有大神/高手麼?”

...

1.有問題請直接說問題——快節奏社會,大家時間都比較寶貴,如果沒回答你是不是一直等下去?沒說問題之前誰知道你要幹嘛,回答在會不會有坑

(想起了網上的一個段子說,在吧,你要是找我借錢咋辦?不在吧,你要是請我吃飯怎麼辦?所以,請直接描述問題,我好決定我在還是不在,哈哈哈)

2.大神,高手這種戴高帽的方式有時候會比較尷尬,想回答的人心想我不算大神我能回答麼?回答了錯誤的話那不是白瞎了這個稱呼?真正有實力的也會保持謙虛的態度,也不敢隨便自封大神啊。 這是待人接物裡比較重要的一點,尤其是在互聯網時代。

言歸正傳,回到問題本身。

一、

順著這位同學的思路我們看看能不能解決

換種思路豁然開朗,這個簡單案例你不止學會幾個函數

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


分享到:


相關文章: