excel 在 table 和 return 另一个值中搜索值
excel search value in a table and return another value
我需要在table中搜索一个值并返回相应行的最后一列的值(如果要简化功能,我可以横跨行和列)。例如,我有以下 table,当我给出搜索值 75 时,我希望得到值 204(同一行最后一列的值)。最后一列也可以移动到第一列,以防它有助于功能。我尝试使用索引、匹配和查找,但这些函数需要一个列数组来搜索。
41 42 43 44 61 62 63 64 81 82 83 84 101 102 103 104 201
45 46 47 48 65 66 67 68 85 86 87 88 105 106 107 108 202
49 50 51 52 69 70 71 72 89 90 91 92 109 110 111 112 203
53 54 55 56 73 74 75 76 93 94 95 96 113 114 115 116 204
57 58 59 60 77 78 79 80 97 98 99 100 117 118 119 120 205
121 122 123 124 141 142 143 144 161 162 163 164 181 182 183 184 216
125 126 127 128 145 146 147 148 165 166 167 168 185 186 187 188 217
129 130 131 132 149 150 151 152 169 170 171 172 189 190 191 192 218
133 134 135 136 153 154 155 156 173 174 175 176 193 194 195 196 219
我会像这样将 index() 与 match() 一起使用:
因此,使用 iferror() 和 match() 来检查每一列,return 找到位置,如果找不到则空白。
然后使用 index() 和 max() 获取找到的位置和 return Q 列的值。
单元格 A15 中拖到 P15 的公式为
IFERROR(MATCH($S,A4:A12,0),"")
单元格 T2 中的公式为
INDEX(Q4:Q12,MAX(A15:P15))
单元格 S2 是您要查找的值。
=INDEX($Q:$Q,AGGREGATE(14,6,1/($A:$P=R12)*ROW($A:$P),1))
如果 table 的第一行不是第 1 行,请参阅下面的注释进行调整
工作原理:
($A:$P=R12)
returns FALSE
的二维数组,在相等点有一个 TRUE
。
1/...
returns #DIV/0!
的数组和 TRUE
的 1
- 乘以
ROW(...)
得到行号
- 使用那个行号来
INDEX
变成table。
- 注意,如果table不是从第1行开始,则需要从计算的行号中减去table的第一行(-1)。
- 如果您使用 Table 或命名范围,这可以动态化。
编辑:更简单的公式
如果您只需要一个结果(例如 table 中的所有条目都是唯一的,您可以使用:
=INDEX($Q:$Q,MAX(($A:$P=R12)*ROW($A:$P)))
我需要在table中搜索一个值并返回相应行的最后一列的值(如果要简化功能,我可以横跨行和列)。例如,我有以下 table,当我给出搜索值 75 时,我希望得到值 204(同一行最后一列的值)。最后一列也可以移动到第一列,以防它有助于功能。我尝试使用索引、匹配和查找,但这些函数需要一个列数组来搜索。
41 42 43 44 61 62 63 64 81 82 83 84 101 102 103 104 201
45 46 47 48 65 66 67 68 85 86 87 88 105 106 107 108 202
49 50 51 52 69 70 71 72 89 90 91 92 109 110 111 112 203
53 54 55 56 73 74 75 76 93 94 95 96 113 114 115 116 204
57 58 59 60 77 78 79 80 97 98 99 100 117 118 119 120 205
121 122 123 124 141 142 143 144 161 162 163 164 181 182 183 184 216
125 126 127 128 145 146 147 148 165 166 167 168 185 186 187 188 217
129 130 131 132 149 150 151 152 169 170 171 172 189 190 191 192 218
133 134 135 136 153 154 155 156 173 174 175 176 193 194 195 196 219
我会像这样将 index() 与 match() 一起使用:
因此,使用 iferror() 和 match() 来检查每一列,return 找到位置,如果找不到则空白。
然后使用 index() 和 max() 获取找到的位置和 return Q 列的值。
单元格 A15 中拖到 P15 的公式为
IFERROR(MATCH($S,A4:A12,0),"")
单元格 T2 中的公式为
INDEX(Q4:Q12,MAX(A15:P15))
单元格 S2 是您要查找的值。
=INDEX($Q:$Q,AGGREGATE(14,6,1/($A:$P=R12)*ROW($A:$P),1))
如果 table 的第一行不是第 1 行,请参阅下面的注释进行调整
工作原理:
($A:$P=R12)
returnsFALSE
的二维数组,在相等点有一个TRUE
。1/...
returns#DIV/0!
的数组和TRUE
的 - 乘以
ROW(...)
得到行号 - 使用那个行号来
INDEX
变成table。- 注意,如果table不是从第1行开始,则需要从计算的行号中减去table的第一行(-1)。
- 如果您使用 Table 或命名范围,这可以动态化。
1
编辑:更简单的公式
如果您只需要一个结果(例如 table 中的所有条目都是唯一的,您可以使用:
=INDEX($Q:$Q,MAX(($A:$P=R12)*ROW($A:$P)))