欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

excel中能否根據戶號將一列數據根據家庭成員批量橫向做成一行

黃文隆2年前48瀏覽0評論

excel中能否根據戶號將一列數據根據家庭成員批量橫向做成一行?

瀉藥!你這個需求是一對多查找,且轉置表格。

案例:

圖 1 是原始表格,需要按班級提取所有人的姓名,向右填充,布局如圖 2 的右邊所示。

解決方案 1:萬金油公式

先將班級列表去重,提取到右邊藍色區域:

1. 將 D 列作為輔助列,在 D2 輸入以下公式,下拉復制公式:

=COUNTIF(A$2:A2,A2)

公式釋義:

統計每個班級是第幾次出現A$2:A2:第一個單元格的行必須固定,第二個活動,這樣隨著公式下拉,始終統計 A$2 到當前行所在單元格區域內,班級名稱的重復次數,即第幾次出現

2. 在 E2 單元格輸入以下公式,按 Ctrl+Shift+Enter 使數組公式生效,下拉復制公式:

=INDEX($A$2:$A$10,SMALL(IF($D$2:$D$10=1,ROW($A$2:$A$10),4^8),ROW(A1)))

公式釋義:

index+small+if+row 就是傳說中的萬金油公式,什么都能查$A$2:$A$10:要查找的數據區域$D$2:$D$10=1:表示班級名稱第一次出現,即去重值ROW($A$2:$A$10):如果滿足上述去重條件,則返回班級名所在的行值4^8:如果不滿足,則返回 4 的 8 次方,即 65536,這是 Excel 2003 的最大行數,通常用來表示找不到就返回最后一個空單元格ROW(A1):a1 的行值,為“1”,隨著公式下拉,會產生步長為 1 的序列值small(...,row(a1)):依次取出數組中第 n 小的值,這個 n 就是 row() 函數返回的值;這一組第 n 小的值就是每個班級名第一次出現時的行值最后用 index 函數根據行值,查找出班級這是個數組公式,所以最后一定要按 Ctrl+Shift+Enter 結束

現在根據班級一對多查找姓名:

3. 在 F2 單元格輸入以下公式,按 Ctrl+Shift+Enter 使數組公式生效,向右向下拖動復制公式::

=INDEX($B:$B,SMALL(IF($A$2:$A$10=$E2,ROW($A$2:$A$10),4^8),COLUMN(A1)))&""

公式釋義:

再次使用萬金油公式,挑不同之處解釋

$A$2:$A$10=$E2:將 A 列中的班級名與 E2 匹配COLUMN(A1):因為這次表格轉置了,向右拖動的時候 row 函數結果不會遞增,所以改用 column 函數&"":當找到 65536 行時,index 會返回“0”,為了不顯示無意義的“0”值,&"" 的作用是把數值轉換為文本,“0”就不會顯示出來了。解決方案 2:vlookup

1. 在“班級”左邊增加一個輔助列,公式如下:

=B2&E2

E 列就是解決方案 1 中的輔助列 D,只是增加了 A 列之后順序右移了F 列也是在解決方案 1 中用第一個萬金油公式提取出的班級名

2. 在 G2 單元格輸入以下公式,向右向下拖動復制公式:

=IFERROR(VLOOKUP($F2&COLUMN(A1),$A:$C,3,0),"")

公式釋義:

$F2&COLUMN(A1):向右拖動到時候,column 函數會返回步長為 1 的序列值,結果就為“一班1”,“一班2”……這就與 A 列的值匹配上了vlookup 是大家最熟悉的配方,就不多解釋了最后用 iferror() 函數將錯誤值顯示為空