如何在Excel中执行Vlookup

zdwk9cvp  于 2023-05-08  发布在  其他
关注(0)|答案(4)|浏览(214)

我刚开始使用Excel。我有一个表1,它显示了产品的数量与不同的日期。我需要将数量从表1更新到表2。这可以使用Vlookup来实现。有人可以帮助我了解如何做到这一点。
提前感谢!
| 产品(表1)|2023年1月2日|2023年3月1日|2023年4月1日|2023年01月05日|
| --------------|--------------|--------------|--------------|--------------|
| AB-01-M1| 0|二十|三十|四十|
| AB-02-M2|五十|10个|二十|0|
| 产品(表2)|日期|数量|
| --------------|--------------|--------------|
| AB-01-M1| 2023年1月2日|二|
| AB-01-M1| 2023年3月1日|二|
| AB-01-M1| 2023年4月1日|二|
| AB-01-M1| 2023年01月05日|二|
| AB-02-M2| 2023年1月2日|二|
| AB-02-M2| 2023年3月1日|二|
| AB-02-M2| 2023年4月1日|二|
| AB-02-M2| 2023年01月05日|二|
预期结果:
| 产品中心|日期|数量|
| --------------|--------------|--------------|
| AB-01-M1| 2023年1月2日|0|
| AB-01-M1| 2023年3月1日|二十|
| AB-01-M1| 2023年4月1日|三十|
| AB-01-M1| 2023年01月05日|四十|
| AB-02-M2| 2023年1月2日|五十|
| AB-02-M2| 2023年3月1日|10个|
| AB-02-M2| 2023年4月1日|二十|
| AB-02-M2| 2023年01月05日|0|

bwntbbo3

bwntbbo31#

您的Table 2只是Table 1的未透视版本。
在Excel 2010+和Microsoft 365中,您可以使用Power Query(内置或在最早版本中作为免费的MS提供的加载项提供)创建整个Table 2给予Table 1。
Get & Transform => Get Data => From Table
然后选择Product列和Unpivot Other Columns
在Microsoft 365中,您还可以通过使用具有某些较新函数的工作表公式来创建表2。
例如,输入到单个单元格中:

=VSTACK(
    {"Product", "Date", "Value"},
    LET(
        dataRng, CHOOSECOLS(Table1[#Data], SEQUENCE(, COLUMNS(Table1) - 1, 2)),
        rowAxis, Table1[Product],
        colAxis, CHOOSECOLS(Table1[#Headers], SEQUENCE(, COLUMNS(Table1) - 1, 2)),
        iCol, COLUMN(INDEX(rowAxis, 1, 1)),
        amountCol, TOCOL(dataRng),
        totalCells, COUNTA(amountCol),
        HSTACK(
            INDEX(
                rowAxis,
                INT(SEQUENCE(totalCells, 1, 0, 1) / COLUMNS(dataRng)) + 1,
                BYCOL(INDEX(rowAxis, 1, ), LAMBDA(aCol, COLUMN(aCol) - iCol + 1))
            ),
            INDEX(
                colAxis,
                SEQUENCE(1, ROWS(colAxis), 1, 1),
                MOD(SEQUENCE(totalCells, 1, 0, 1), COLUMNS(dataRng)) + 1
            ),
            amountCol
        )
    )
)

创建:

从上面的Table 1
改编自answer given by @pgSystemTester

sqyvllje

sqyvllje2#

您可以使用index(match)将日期与产品编号匹配以获取值。我拿了你的样本,把它们并排放在一张纸上,用I2中的这个公式,把它拖下来。

=INDEX($B$2:$E$3,MATCH(G2,$A$2:$A$3,0),MATCH(H2,B$1:E$1,0))

uyhoqukh

uyhoqukh3#

您可以尝试以下操作:

=LET(lk, A1:E3, in, A5:C13, lkdates, TAKE(lk,1),lkProd, TAKE(lk,,1),
 data,DROP(in,1), nQty, MAP(TAKE(data,,1), INDEX(data,,2), LAMBDA(p,d,
  INDEX(FILTER(lk, lkProd=p),,XMATCH(d,lkdates)))),
 HSTACK(DROP(in,,-1), VSTACK("Quantity",nQty)))

这是另一种不使用数组助手函数(如MAP)的方法:

=LET(lk,A1:E3,in,A5:C13,lkdates,TAKE(lk,1),lkProd,TAKE(lk,,1),data,DROP(in,1),
 arr, INDEX(lk, XMATCH(TAKE(data,,1), lkProd),SEQUENCE(,COLUMNS(lk))),
 nQty, INDEX(arr,SEQUENCE(ROWS(data)),XMATCH(INDEX(data,,2), lkdates)),
 HSTACK(DROP(in,,-1), VSTACK("Quantity", nQty)))

下面是输出:

该公式仅取决于两个范围:lkin,这样就可以更容易地调整到您的真实的问题。其余的名字是从它们推导出来的,通过DROPTAKEINDEX。有很多方法可以做到这一点,这只是其中之一。我们使用MAP来迭代data的前两列的data。我们从lk name通过FILTER按乘积(p)过滤行,然后通过INDEX/XMATCH组合获取给定日期(d)的相应列。

klr1opcd

klr1opcd4#

下面是在Google工作表中取消透视的公式。

=VSTACK({"Product","Date","Quantity"},
ArrayFormula(SPLIT(FLATTEN(A2:A3&"♦"&B1:E1&"♦"&B2:E3),"♦")))

您可以使用XLOOKUP & FILTER来获取值。

=XLOOKUP(G2,$A$2:$A$3,FILTER($B$2:$E$3,$H2=$B$1:$E$1))

你可以像下面这样用更动态的方式来计算

=MAP(G2:G9,H2:H9,LAMBDA(g,h,XLOOKUP(g,$A$2:$A$3,FILTER($B$2:$E$3,h=$B$1:$E$1))))

Excel中,您可以使用Power Query Tool取消透视其他列

1.选择Table 1
1.从Data Tab => Get&Transform Data => From Table/Range
1.将Home Tab中的M-Code粘贴到Advanced Editor

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Product (Table 1)", type text}, {"01/02/2023", Int64.Type}, {"01/03/2023", Int64.Type}, {"01/04/2023", Int64.Type}, {"01/05/2023", Int64.Type}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Product (Table 1)"}, "Attribute", "Value"),
    #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Product (Table 1)", "Product"}, {"Attribute", "Date"}, {"Value", "Quatity"}})
in
    #"Renamed Columns"

1.点击Close & Load,在新工作表中获取预期结果

Excel中使用VLOOKUP & MATCH函数可以得到预期的结果

在单元格I2中输入公式并向下拖动

=VLOOKUP($G2,$A$2:$E$3,MATCH($H2,$A$1:$E$1,0),0)

在Excel中,您可以使用双XLOOKUP或XLOOKUP & FILTER

在单元格I2中输入公式并向下拖动

=XLOOKUP($G2,$A$2:$A$3,XLOOKUP($H2,$B$1:$E$1,$B$2:$E$3))
=XLOOKUP($G2,$A$2:$A$3,FILTER($B$2:$E$3,$H2=$B$1:$E$1))

相关问题