返回列表 上一主題 發帖

[發問] 組合跳列篩選

[發問] 組合跳列篩選

附件  :   組合跳列篩選.rar (17.07 KB)
說明:
1_本題範例為7組(實際共50組)。
2_每個組合的搜尋範圍 = C216:AY825。
3_當列和下5列為1個比對組合。
4_第1個比對組合=221:226;第2個比對組合=233:238;第3個比對組合=245:250;
其餘------類推(即每跳12列增加1個比對組合) 。
5_目前Sheet1! C 的公式為一式一列。
PS:
C1的公式是以列221比對列226,並將當列(列221)沒有顯示在下5列(列226)的數字~
顯示在C1→右拉到AY1填滿。     其餘 _C2:C7_的公式同理類推。

需求:
請將Sheet2! C 的公式改為一式到位
謝謝 !

本帖最後由 ML089 於 2021-10-30 09:16 編輯

C1 陣列公式
=LOOKUP(1,IF({1;0},{0,""},INDEX(列221ALL,SMALL(IF(COUNTIF(列226C_AY,列221C_AY)=0,COLUMN(列221C_AY)),COLUMN(A1)))^{0,1}))

建立公式名稱:先選擇C1,工具列 公式 - 名稱管理員 - 新增 以下名稱

列221ALL   =OFFSET(Sheet2!$A$221:$AY$221,ROW()*12-12,)                                               
列221C_AY  =OFFSET(Sheet2!$C$221:$AY$221,ROW()*12-12,)                                               
列226C_AY  =OFFSET(Sheet2!$C$226:$AY$226,ROW()*12-12,)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 2# ML089
附件  :   組合跳列篩選_1030.rar (20.66 KB)
版大 : 您好 !
感謝指導~辛苦您了
測試結果~公式顯示的值是當列(Ex:列221)的所有值,並沒有移除有出現在下5列(Ex:列226)的相同值。
我將公式放在Sheet2!J1~這樣比較好測試。
請詳見附件。

PS : 末學沒有用名稱定義~因為公式沒有太長(以本題高難度的公式需求,貴公式解已經是超簡短了)。

TOP

本帖最後由 ML089 於 2021-10-30 12:23 編輯

回復 3# ziv976688
詳檔案測試
組合跳列篩選_1030A.rar (23.77 KB)

OFFSET(Sheet2!$C$221:$AY$221,ROW()*12-12,) 
1 使用名稱公式設定帶入原公式,執行 OK
2 將其帶入原公式內,執行NG。
主要是在工作表公式裡 OFFSET  參數若使用 ROW()時被視為陣列型態(不定值),需要在 OFFSET外在掛 N(....)
這個決解方法就是在 ROW(...) 外掛上 MAX( ... ),系統會視為定值
問題是原式 加入 OFFSET 及 MAX 後,巢狀迴圈超過數量,無法使用
拿INDEX(...)這段主要公式來測試,
         加 OFFSET(...ROW(...) ...) ,NG
         加 OFFSET(...MAX(ROW(...) ...) ,OK
你可以用 INDEX(...OFFSET(...MAX(ROW(...))...) & "",也可以達成,只是數字為文字型態
下方舊檔案無法刪除,不用下載

組合跳列篩選_1030.rar (20.66 KB)

組合跳列篩選_1030.rar (20.66 KB)

{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 4# ML089
版大 : 您好 !
真不好意思,末學實在是淺薄~沒有想到名稱定義有導正公式型態的作用~
一直以來都以為設定名稱定義公式~只是為了縮減公式字元而已

承您熱心指導本題解答公式,並耐心說明所有呈現的結果與其原由~
末學受益良多~由衷感激

TOP

回復 4# ML089
版大 :  您好 !
不好意思~末學才疏學淺~一直打擾您~尚請見諒^^"
附件 :   7A_1903期統計表(效果檔).rar (12.41 KB)
因為表格格式改變~第1列改為標題;跳12列改為跳13列
所以末學將貴公式解改為~
C2
=INDEX(OFFSET($A$221:$AY$221,MAX(ROW()*13-13),),SMALL(IF(COUNTIF(OFFSET($C$226:$AY$226,MAX(ROW()*13-13),),OFFSET($C$221:$AY$221,MAX(ROW()*13-13),))=0,COLUMN(OFFSET($C$221:$AY$221,MAX(ROW()*13-13),))),COLUMN(A1)))&""
只是不知為何答案不正確(多了1跳)~
公式非得要放在C1~才能顯示正確答案。

請問:公式要如何修正~才能由任1列起始,都可得到正確答案?   謝謝您 ^_^

TOP

回復 4# ML089
版大 : 您好 !
連吃飯都在想~終於開竅了~只要將ROW( )改為ROW(A1)就可以了
萬分感謝您一直耐心的指導和熱心幫忙~末學才能功力漸進~感恩

TOP

回復 4# ML089
附件 :   7A_1903期統計表.rar (24.84 KB)
版大 : 您好 !
你可以用 INDEX(...OFFSET(...MAX(ROW(...))...) & "",也可以達成,只是數字為文字型態
因為上述公式右拉到AY~會產生許多#NUM!
所以最後還是採用名稱定義的公式~只是過了一段時間要再用到時~末學就常常忘了當初設立定義的公式是什麼用意?

再次謝謝您的耐心指導~感恩

TOP

回復 4# ML089
#8的附件弄錯了
這個才對~ 7A_1903期統計表(效果檔)_1030.rar (43.3 KB)
謝謝

TOP

回復 8# ziv976688

定義名稱公式好像很麻煩,如果資料位置都是名稱定義,日後維護公式反而容易,如要擴張資料範圍或移動資料位置,公式不用改變,只要重新資料位置名稱,修改公式反而容易一些。
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題