還在為Excel合併單元格導致的各種問題煩惱嗎?這裡一起解決

亦心Excel發表於2020-12-26

點贊再看,養成習慣;水不在深,有龍則靈
微信搜尋【亦心Excel】關注這個不一樣的自媒體人。
本文 GitHub https://github.com/hugogoos/Excel 已收錄,包含Excel系統學習指南系列文章,以及各種Excel資料。

相信大家在使用Excel的過程中應該經常使用合併單元格吧,但是也是因為合併單元格導致了各種問題,比如:移動問題,序號問題、計數問題、求和問題、排序問題、篩選問題等等。

小編在上一章最後已經分享了關於移動的問題即移動列,在大多數標題行都會用到合併單元格,而這也會導致列無法移動列,而解決辦法就是使用「水平對齊」中「跨列居中」。

今天小編和大家分享其他幾類因為合併單元格導致的問題。

1、序號

如上圖,我們想在序號列填充連續序號,於是我們在“一(3)班”前面的序號列輸入公式:「=ROW()-4」,但是當我們想拖動填充柄自動填充下面的序號時,就會提示“若要執行此操作,所有合併單元格需大小相同。”,如下圖:

根據提示的意思是因為合併單元格需相同大小,因為我們的資料是有兩行合併,三行合併,那根據提示的意思是不是如果我們都用相同行數合併就可以了呢?我們來試試。

修改以後,的確不報錯了,資料也出來了,但是顯示不是我們想要的結果。再說實際使用過程中也不可能保證所有合併的單元格大小是相等的。

我們可以使用COUNT函式來解決這個問題,這個函式小編也說過好多遍了,主要作用就是計算包含數字的單元格個數以及引數列表中數字的個數。

操作很簡單,首先我們選擇B5:B11單元格區域,然後在編輯欄中輸入公式「=COUNT(B$4:B4)+1」,最後按快捷鍵「Ctrl+Enter」完成批量填充序號。

具體演示如下:

2、計數

如上圖,當我們想在班級人數列中統計每個班級人數的時候,要怎麼做呢?

我們可以來梳理一下思路:

  1. 假如我們計算序號1班的人數那麼我們可以直接用公式:「=COUNTA(D5:D6)」(COUNTA 函式計算範圍中不為空的單元格的個數。)即可得到;
  2. 如果計算序號2班的人數,我們就可以用公式:「=COUNTA(D5:D9)」計算出兩個班的人數,然後減去序號1班的人數即可;
  3. 同理也就可以計算出序號3班的人數。

順著這個思路,我們可以寫出公式「=COUNTA(D$5:D6)-SUM(F$5:F6)」,當我們在F5單元格中輸入,上面公式後,得到如下提示:

這是因為SUM(F$5:F6)形成了自引用,但是這個求和又是必須的,因為在計算後面班級人數的時候是需要減去前面班級人數和的。

那麼如果我們把上面方法反過來計算,從下往上計算,先算序號3班的人數,再算序號2,序號1班的人數呢?而且我們求和公式不用當前單元格而用下一行單元格,比如計算序號3班人數公式用「=COUNTA(D10:D$11)-SUM(F11:F$11)」,因為本身我們是不需要把當前班級人數計算到求和公式裡的,而且因為合併單元格的特殊資料都在第一行裡,因此SUM(F11:F$11)這樣的寫法不但解決了不把當前班級人數加入求和計算,而且還解決了,自引用的問題。因此寫成SUM(F11:F$11),而不是SUM(F10:F$11)。這一點可以說是這個公式的精華了。

整個梳理過程已經完成,實現還是要注意一點,不能直接用上面的公式,因為我們用公式後還要自動填充的,因此我們需要使用對應的公式。

選擇F5:F11單元格區域,在編輯欄輸入公式「=COUNTA(D5:D$11)-SUM(F6:F$11)」,按快捷鍵「Ctrl+Enter」完成批量計算人數。

具體過程如下:

3、求和

如上圖,我們求每個班的總分,其實經過上一個例子,這個問題就很簡單了,原理完全一樣,只需要使用公式「=SUM(E5:E$11)-SUM(G6:G$11)」。

4、排序

如上圖,我們希望對每個班學生繼續一個成績排序,也就只做班級內部排序。

而如果直接對E列進行排序那麼就導致對所有學生排序,這顯然不符合我們的需求。如果我們想保持班級的整體位置不變,那麼就需要保證下面的班級所有人的分數必須比上面班級所有人的分數都要高。當前分數顯然是不行的,因此我們需要藉助輔助列,然後拼接出我們想要的分數,比如我們把每個班級前面的序號+得分這樣不就行了嗎?

於是小編在F5單元格中用公式「=B5&E5」進行了拼接,但結果不盡如人意,因為序號列是合併單元格列,只有每個合併單元格第一行有值,而且如果有人得分是1位數或3位數那麼即使序號+得分拼接正確,結果也是錯誤的。至少整體思路是沒問題的,因此我們需要換一種獲取序號的方式和拼接方式。

序號:我們不可以直接使用值,但是可以用公式「=COUNT($B$5:B5)」計算出來,其中的原理大家可以自己思考。

拼接方式:為了保證即使每個學生的得分位數不一樣也可以使用,我們可以把需要變成一個比分數最大值還大的數然後在加上得分即可,比如序號*10000+得分。

因此如上圖使用公式「=COUNT($B$5:B5)*1000+E5」填充輔助列後,得到了我們想要的資料了,然後在對輔助列排序即可。注意排序不用選擇序號和班級列,因為是合併單元格排序會報錯,而且我們的要求結果也是班級順序不會發生變化,因此只需要選擇D4:F11單元格區域即可。

上面例子是把班級內部按學生得分升序排序的,如果要把班級內部學生得分按降序排序要怎麼做呢?大家可以自己嘗試一下哦。

5、篩選

如上圖,當我們對班級進行篩選,一(1)班有3個學生,結果卻只篩選出來一位。其原因是在合併單元格時,會得到“合併單元格時,僅保留左上角的值,而放棄其他值。”,如下圖。

因此C7:C9單元格區域合併單元格後只有C7單元格內有一(1)班,其他都是空值。

我們把C7:C9單元格區域取消合併單元格,看看結果:

不能篩選的原因我們搞清楚了,但是要怎麼解決這個問題呢?那如果我們能讓每個單元格都有值,但是看起來還是合併單元格的樣子只保留一條資料,是不是就可以了呢。這又能不能做到呢?

這個時候就是考驗基本功的時候了,不知道大家還記得「格式刷」嗎?還記得「貼上」中「格式」嗎?這兩個功能可都是可以做到複製單元格格式的功能

說到這裡,是不是茅塞頓開呢?我們可以先把班級列複製出來,然後把原班級列取消合併單元格,並把其他空值重新填充正確,然後應用「格式刷」或「貼上」中的「格式」把複製出來的班級列樣式複製回去。

我們先進行一個簡單的驗證:

通過上面的演示過程,我們可以看到使用複製單元格格式以後,C7:C9單元格區域看起來還是合併單元格,但是當把合併單元格取消以後C7:C9區域每個單元格都是有值的,

因此這個方式是可用性的。下面操作就容易多了。

  1. 選中C4:C11單元格區域並複製,到任意空白單元格區域貼上;
  2. 再次選中C5:C11單元格區域,取消合併單元格;
  3. 按快捷鍵「Ctrl+G」,點選「條件定位」選擇「空值」;
  4. 在編輯欄中輸入公式:「=C5」,按快捷鍵「Ctrl+Enter」,完成空行內容填充;
  5. 選中之前被複製出來的班級列資料區域,並點選「格式刷」,然後用「格式刷」刷C4:C11單元格區域;
  6. 這時就可以使用篩選功能篩選班級了。

具體演示如下:

今天的分享到這裡就結束了,但是學習的道路才剛剛開始,希望我們可以在學習的道路上不斷地前進,堅持不懈。

如果你有感興趣的功能,可以告訴小編哦,小編會為你寫一篇相應的文章。當然是先到先寫哈,我會列一個計劃表,儘量滿足大家的需求,所以如果下一篇不是你要的文章,請不要著急,可能就在下下篇。記得告訴小編你想學習的功能哦。

文章持續更新,可以微信搜尋「 亦心Excel 」第一時間閱讀,本文 GitHub https://github.com/hugogoos/Excel 已經收錄,包含Excel系統學習指南系列文章,歡迎Star。

 

 

相關文章