偷看。
我目前有一个二维数据表,它测量两个输入的灵敏度,关于利润。
整个数据表是(D183:AI234
)。我从获取max()
值可以获得最大利润,我想知道我可以创建什么样的公式,所以我可以在数据表(其中两个)中获得相应的值,这些值创造了max()
从整体中判断的利润数据表。
我尝试过的事情:hlookup
,vlookup
从行和列获取输入,但从两者获得N / A.
例如,为了从行获取输入,基于look_up
值,我使用了这个公式:=HLOOKUP(E237,D183:AI234,1,0)
亲切的问候
数据表:
这是使用数组函数执行此操作的一种hacky方式。我认为有一些更清洁的东西。
编辑我误读了原来的问题。
我假设数据本身在D183:AI234范围内 - y类别的标签在C183:C234中,x类别的标签在D182:AI182中。
要查找最大值的行:MAX((D183:AI234 = MaxVal)*ROW(D183:D234))
使用行号,有多种选项可以实际访问y标签中的值:
OFFSET
(假设为C182)。 OFFSET(C182, MAX((D183:AI234 = MaxVal)*ROW(D183:D234)) - ROW(C182), 0)
。INDIRECT
和ADDRESS
访问标记的单元格,行号和标签的列标识符。 INDIRECT(ADDRESS(MAX((D183:AI234 = MaxVal)*ROW(D183:D234)), COLUMN(C182)))
INDEX
和行号来检索值。 INDEX(C183:C234,MAX((D183:AI234 = MaxVal)*ROW(D183:D234)), COLUMN(C182)) - ROW(C182))
请注意,这些都是数组函数,必须使用CTRL + SHIFT + ENTER
输入。
我更喜欢INDEX
方法,因为它是非易失性的(OFFSET
和INDIRECT
都是易失性函数,并且每次更改工作表/ excel重新计算时都会重新计算)我通常认为这是更好的练习。
要获得x值,您可以使用MAX((D183:AI234 = MaxVal)*COLUMN(D183:AI183))
标识最大值列,并调整您选择的三种方法中的任何一种。
找到下面的max(但不是相关类别值)的地址的原始答案:
要查找最大条目的行,您希望将一个布尔数组乘以您的值与最大值匹配,那么,这是(D183:AI234 = MaxVal)
的行号,所以ROW(D183:D234)
。该乘法的结果是(0,0,..,最大值的行,......)的向量,因此您可以使用其中的MAX
来查找行号。
该列也是如此,但您可以使用COLUMN(D183:AI183)
。然后,您可以使用ADDRESS
函数获取单元格地址。
把它们放在一起......
=ADDRESS(MAX((D183:AI234 = MaxVal)*ROW(D183:D234)),MAX((D183:AI234 = MaxVal)*COLUMN(D183:AI183)))
这必须作为数组函数输入(CTRL + SHIFT + ENTER)