Excel索引/匹配,但列不是';我不总是在同一个地方

Excel索引/匹配,但列不是';我不总是在同一个地方,excel,excel-formula,Excel,Excel Formula,我得到了电子表格中的数据,其中的列并不总是在同一个位置。我在VBA中找到了一些代码,可以根据数组对列进行重新排序,但每次我移动它们时,它都会移动所有引用,就像我想引用第1列一样,但我将第1列放在第3列中,工作表中的所有公式都会随之更改为第3列。我想你可以在我的历史中找到我的问题 现在我有一个有很多列的表,其中两列是one_unknown和two_unknown,它们可能在工作表的任何地方。我想找到x的值,它位于one\u unknown列中,与two\u unknown列中的值y具有相同的行号。

我得到了电子表格中的数据,其中的列并不总是在同一个位置。我在VBA中找到了一些代码,可以根据数组对列进行重新排序,但每次我移动它们时,它都会移动所有引用,就像我想引用第1列一样,但我将第1列放在第3列中,工作表中的所有公式都会随之更改为第3列。我想你可以在我的历史中找到我的问题

现在我有一个有很多列的表,其中两列是one_unknowntwo_unknown,它们可能在工作表的任何地方。我想找到x的值,它位于one\u unknown列中,与two\u unknown列中的值y具有相同的行号。我最终得到了一堆复杂的公式,包括索引和匹配,从

MATCH("two_unknown",1:1)
获取two\u未知的列号,以及获取one\u未知的列号的相同过程

但我想使用索引,告诉它在two_unknown中查找y,但我只有一个数字,而不是一个范围,比如说如果它在第4列,我有一个长变量4,我想要一个范围变量D:D

我开始编写一个函数,将一个数值转换为该列的数字定义的范围,这看起来太傻了。我想到的所有其他解决方案都同样不雅观和混乱,我觉得我盯着它看了太久,而解决方案可能比我想象的要简单得多

有人知道我该怎么做吗


提前感谢

这可以通过许多公式方法解决

把数据转换成Excel表格怎么样?确保列的名称符合预期。在此公式中,查找值位于名为LookHere的列中,结果列名为ReturnThis,然后可以使用

=INDEX(Table1[ReturnThis],MATCH(I2,Table1[LookHere],0))
或者,如果您有Office 365,请使用新的XLookup

=XLOOKUP(K2,Table1[LookHere],Table1[ReturnThis])
如果由于某种原因,无法将数据转换为Excel表格,则可以使用“匹配”返回列的位置,例如,假设列标签位于第1行中:

=MATCH("LookHere",1:1,0)
=MATCH("ReturnThis",1:1,0)
将它们放入工作表单元格,如单元格K4和K5,然后使用这样的索引/匹配,使用两个索引公式构建索引,并将其转换为具有交集“:”运算符的范围。您需要为此方法提供第一行和最后一行的行号

=INDEX(INDEX(A:F,1,K5):INDEX(A:F,100,K5),MATCH(K2,INDEX(A:F,1,K4):INDEX(A:F,100,K4),0))

使用这些公式设置命名范围并使用命名范围 =索引(索引(A:F,1,ReturnThisColumn):索引(A:F,100,ReturnThisColumn),匹配(K2,索引(A:F,1,LookHereColumn):索引(A:F,100,LookHereColumn),0))


如果你有新的Let()函数,你可以用它来代替指定的范围。

你能展示一些示例数据吗?试着用列号来使用
range.offset()
。我的天哪,非常简单的答案确实是直截了当的。我不知道为什么我没有看到将它转换成一个表将允许我按名称引用这些列。事实上,对于我正在导入的所有其他数据,这也是最明智的做法。我将使用VBA将导入转换为表。谢谢你@teylyn!LET()函数看起来也很有用,谢谢。对我来说是新的