在一個含有合併單元格數據的表格進行查詢分析時,我們遇到了挑戰。具體來說,表1記錄了一組項目統計數據,詳盡展示了各項目在不同年份的表現情況。現需構建一張表2作為查詢報表,其功能應為:當用戶輸入特定年份後,報表能準確呈現該年份內所有項目的相關數據。
本應是一個簡易的查詢任務,卻因表1中存在合併單元格而變得複雜。源表為了保持格式整齊與視覺美感,對合併單元格的使用有所堅持,既不允許取消現有合併,也不接受通過增設輔助列的方式來簡化查詢過程。這就對我們在不破壞源表結構的前提下,實現高效、精準的年度數據查詢提出了較高要求。
需求分析
要確保在表2中錄入查詢年份後,報表能準確展示該年份內所有項目的相關數據,首先需要取消合併單元格,並對由此產生的空白單元格進行數據填充,將其整理成一個規範的一維數據表。關鍵挑戰在於如何在不藉助輔助列的情況下構建單一連續的數組。即將發佈的WPS辦公軟件中的SCAN函數恰好能夠有效應對這一難題。
利用SCAN函數,可以針對取消合併單元格後出現的空值進行迭代處理。具體操作如下:對每個單元格(用變量Y表示)進行判斷,若Y值為空,則保留前一次迭代的結果(即變量X的值);反之,若Y非空,則將當前單元格的Y值作為結果輸出。如此一來,SCAN函數便能自動跳過空白單元格,連貫地串聯起非空數據,生成所需的一維數組,從而無需額外使用輔助列。
綜上所述,藉助WPS即將推出的SCAN函數,通過對其迭代過程中遇到的空單元格進行智能判斷與處理,能夠在無需輔助列的條件下,高效地將取消合併後的表格整理成標準的一維數據表,確保報表能夠準確反映所查詢年份內所有項目的相關數據。
單列取消
由於表格中存在多列合併的單元格,為了便於大家清晰理解函數公式的計算邏輯,我們將分步驟展示其構成,最終再整合成完整的公式。首先,請在單元格中鍵入以下第一步的函數:
=SCAN("",D3:D12,LAMBDA(X,Y,IF(Y="",X,Y)))
此公式旨在處理取消合併後的單元格,通過SCAN函數逐步遍歷範圍D3:D12。當遇到空單元格(即Y=""),函數保留前一次迭代的結果X;對於非空單元格,則返回當前單元格的值Y。執行完畢後,將得到已消除合併影響、填充了空白單元格的有序數據結果。
多列取消
若需對多列合併單元格進行處理,一種簡便的做法是分別應用上述針對單列取消合併單元格的公式邏輯。然而,隨着處理列數增多,相應的公式將會顯著增長,顯得冗長且不易管理。為避免這種重複操作,可巧妙引入轉置函數,從而簡化整個過程。
錄入以下函數:
=TRANSPOSE(SCAN("",TRANSPOSE(B3:G12),LAMBDA(X,Y,IF(Y="",X,Y))))
藉助轉置函數(如TRANSPOSE),通過兩次巧妙的應用,我們可以高效地處理多個合併單元格,避免對多列合併單元格進行繁瑣的重複取消操作。這種方法不僅顯著提升了處理效率,還確保了公式的簡潔性。
效果如下圖所示:
篩選查詢
上面的公式實現了取消合併單元格的效果,將源數據巧妙的轉換成一個標準的一維數據後,就可以配合篩選函數進行篩選查詢了,其中查詢的條件就是篩選條件。
錄入公式:
=FILTER(TRANSPOSE(SCAN("",TRANSPOSE(B3:G12),LAMBDA(X,Y,IF(Y="",X,Y)))),E3:E12=J1)
函數釋義:
已篩選數據區域B3:G12(該區域為已取消合併的單元格),篩選條件設定為E3:E12列數值等於查詢條件J1(設定為“2020”)。經過篩選,成功返回了兩行數據,分別對應北京和寧波的項目A與B。至此,完成了對合併單元格數據的查詢報表設計。
以上就是excel利用SCAN函數合併單元格完整的案例,希望大家喜歡,請繼續關注。
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/207354.html