我想從另一個表的特定列中提取所有值。我的目標是選取一些不同的表,并將每個表中的特定列放入一個單獨的、經過整理的表中。
例如,假設我有關于不同型別物件的表格
FRUITS
name flavor
banana savory
orange sweet
peach sweet
PETS
name lifespan
dog long
fish short
cat long
想象一下,我現在想用水果和寵物的名稱列制作第三張表。
COLLATED
name source
banana fruits
orange fruits
peach fruits
dog pets
fish pets
cat pets
我嘗試安裝 powerpivot 加載項來執行此操作,但我不確定如何在 Mac 上執行此操作。如果可能,我更愿意使用 Excel 提供的任何“表格連接”功能。
uj5u.com熱心網友回復:
我在作業表中添加了兩個表:tblFruits 和 tblPets。
然后,您可以將以下公式放在同一張紙或另一張紙上的任何單元格中。
=LET(
a,CHOOSE({1,2},tblFruits[name],"Fruits"),
b,CHOOSE({1,2},tblPets[name],"Pets"),
rowIndex,SEQUENCE(ROWS(a) ROWS(b)),
colIndex,SEQUENCE(1,COLUMNS(a)),
IF(rowIndex<=ROWS(a),
INDEX(a,rowindex,colIndex),
INDEX(b,rowindex-ROWS(a),colIndex)
)
)
公式的前四行用于檢索變數,然后在最終的 IF 函式中使用這些變數:
a并且b將回傳各自的名稱欄加上“新的”列給出此型別的“虛擬”陣列。
rowIndex 回傳單個陣列 {1,2,...(兩個表的行數)}
colIndex 回傳一個由列數構成的陣列 - 在本例中為 2(名稱和型別)
這些變數在IF-formula中使用:將其視為For i = 1 to Ubound(rowIndex)-loop。
如果rowIndex-Array 中的第一個值小于 的行數tblFruits,
- 然后
INDEX-result 基于虛擬陣列a, - 如果不是,
b則計算行索引并且-resultINDEX基于虛擬陣列b。
結果是一個溢位陣列- 您可以在其上使用過濾器。只需添加一個標題行并添加過濾器。
但是您將無法基于它創建表。因此,您必須使用 VBA 來創建組合資料。
這將是帶有第三個表的公式:
=LET(
a,CHOOSE({1,2},tblFruits[Name],"Fruits"),
b,CHOOSE({1,2},tblPets[name],"Pets"),
c,CHOOSE({1,2},tblRooms[name],"Rooms"),
rowIndex,SEQUENCE(ROWS(a) ROWS(b) ROWS(c)),
colIndex,SEQUENCE(1,COLUMNS(a)),
IF(rowIndex<=ROWS(a),
INDEX(a,rowIndex,colIndex),
IF(rowIndex<=ROWS(a) ROWS(b),
INDEX(b,rowIndex-ROWS(a),colIndex),
INDEX(c,rowIndex-(ROWS(a) ROWS(b)),colIndex))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/351867.html
