首頁>Club>
如圖描述,每一個戶主後面將家庭成員排成一行。
18
回覆列表
  • 1 # 見人拉屎喉嚨癢

    簡單啊,1資料載入到power query,把身份證,姓名,關係欄位合併為一個新欄位,並且以分隔符隔離,例如逗號,

    2分組依據,按照戶號,新列名隨便,操作改為求和,對新欄位求和。

    3將編輯欄的sum函式,更改為Text.Combine注意字母大小寫!!

    4拆分列,按照逗號拆分,並且把高階項拆分列數調大點,比如最多一戶7人,就得每人涉及身份證,名字,關係三個欄位,7人就要3*7=21列。

    5關閉載入pq編輯器,資料發生變化,每次右鍵重新整理即可

  • 2 # 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() 函式將錯誤值顯示為空
  • 3 # 曉宋的OFFICE專欄

    先加一個輔助列 吧戶號,和在這個戶中的順序列出來

    在用vlookup組合填充就可以了

    這樣會有有報錯,可用iferror去掉報錯

  • 中秋節和大豐收的關聯?
  • Linux運維和Linux雲計算有什麼區別?