【问题标题】:INDEX to combine two columns, where one column spans on multiple rowsINDEX 组合两列,其中一列跨越多行
【发布时间】:2018-11-04 15:02:08
【问题描述】:

基于this answer to VLOOKUP by Combining 2 Columns to Form a Unique Key questionINDEX 公式在MATCH'es lookup_range 参数之一跨越多行的情况下不起作用:

=INDEX($C$3:$C$5, MATCH($A$3 & $B$3, $A$3:$A$5 & $B$3:$B$5, 0))
                                     ^       ^
                                     |       |
                                     +---+---+
                                         |
                      lookup_range column spans multiple rows

用法:

+---+------+-------+---------------+-----------------+----------------+
| \ |   A  |   B   |       C       |        D        |        E       |
+---+------+-------+---------------+-----------------+----------------+
| 1 |                               CARS                              |
+---+-----------------------------------------------------------------+
| 2 | Make | Model | Current price | Production Year | Original price |
+---+------+-------+---------------+-----------------+----------------+
| 3 | Audi | A1    | 40000         | 2013            | =MY_FORMULA    |
+---+------+-------+---------------+-----------------+----------------+
| 4 | Audi | A2    | 50000         | 2010            | =MY_FORMULA    |
+---+------+-------+---------------+-----------------+----------------+
| 5 | Audi | A3    | 60000         | 2014            | =MY_FORMULA    |
+---+------+-------+---------------+-----------------+----------------+

此表确实有效

+---+------+-------+-------+
| \ |   A  |   B   |   C   |
+---+------+-------+-------+
| 1 |        Prices        |
+---+----------------------+
| 2 | Make | Model | Price |
+---+------+-------+-------+
| 3 | Audi | A1    | 50000 |
+---+------+-------+-------+
| 4 | Audi | A2    | 60000 |
+---+------+-------+-------+
| 5 | Audi | A3    | 70000 |
+---+------+-------+-------+

对这张桌子不起作用(我想要它):

+---+------+-------+-------+
| \ |   A  |   B   |   C   |
+---+------+-------+-------+
| 1 |        Prices        |
+---+----------------------+
| 2 | Make | Model | Price |
+---+------+-------+-------+
| 3 | Audi | A1    | 50000 |
+---+      +-------+-------+
| 4 |      | A2    | 60000 |
+---+      +-------+-------+
| 5 |      | A3    | 70000 |
+---+------+-------+-------+

很明显,将 AUDI 值跨越多行以避免冗余和拼写错误。我怎样才能做到这一点?

【问题讨论】:

  • 它们是合并单元格吗?否则,您可以使用表格填充来填充缺失值。
  • 是的,这些是合并单元格@QHarr
  • 您是否考虑过包含 A3&B3 等的辅助列?匹配的工作?
  • 我尝试了这个公式,它在我能想到的每一种情况下都进行了一些调整。你能详细说明你想要做什么吗?小桌子是大桌子的一部分吗?当您使用最后一张桌子时,公式不起作用,因为第 4 行和第 5 行的奥迪丢失了?也许还有更多的数据行,即还有其他汽车。
  • 是的,这只是一个更大的表格的概述,是的,最后一个公式不起作用,因为缺少第 4 行和第 5 行的奥迪。我想不出更好的解释来解释我所面临的问题。

标签: excel google-sheets


【解决方案1】:

您应该能够在 Google 表格中通过如下的 vlookup 执行此操作:-

=ArrayFormula(vlookup(E3&F3,{vlookup(row(A$3:A$10),{if(A$3:A$10<>"",row(A$3:A$10)),A$3:B$10},2)&B$3:B$10,C$3:C$10},2,false))

内部 vlookup 查找包含行号小于或等于当前行的汽车制造商的最后一行。如果您愿意,外部 vlookup 可以是索引匹配,您可以通过输入 A$3:A 等将范围扩展到最后一行。


为了完整起见,在 Excel 中,您必须诱使 Index 函数为您提供一个可以处理的数组 see this

=INDEX(C$3:C$10,MATCH(E3&F3,INDEX(A$3:A$10,N(IF({1},MATCH(ROW(A$3:A$10),IF(A$3:A$10<>"",ROW(A$3:A$10))))))&B$3:B$10,0))

作为数组公式输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2016-06-03
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多