如何从二维数据表中提取相应的列和行图?

问题描述 投票:-1回答:1

偷看。

我目前有一个二维数据表,它测量两个输入的灵敏度,关于利润。

整个数据表是(D183:AI234)。我从获取max()值可以获得最大利润,我想知道我可以创建什么样的公式,所以我可以在数据表(其中两个)中获得相应的值,这些值创造了max()从整体中判断的利润数据表。

我尝试过的事情:hlookupvlookup从行和列获取输入,但从两者获得N / A.

例如,为了从行获取输入,基于look_up值,我使用了这个公式:=HLOOKUP(E237,D183:AI234,1,0)

亲切的问候

数据表:

data table

excel vba excel-vba excel-formula
1个回答
2
投票

这是使用数组函数执行此操作的一种hacky方式。我认为有一些更清洁的东西。

编辑我误读了原来的问题。

我假设数据本身在D183:AI234范围内 - y类别的标签在C183:C234中,x类别的标签在D182:AI182中。

要查找最大值的行:MAX((D183:AI234 = MaxVal)*ROW(D183:D234))

使用行号,有多种选项可以实际访问y标签中的值:

  1. 您可以从表格左上方的OFFSET(假设为C182)。 OFFSET(C182, MAX((D183:AI234 = MaxVal)*ROW(D183:D234)) - ROW(C182), 0)
  2. 您可以使用INDIRECTADDRESS访问标记的单元格,行号和标签的列标识符。 INDIRECT(ADDRESS(MAX((D183:AI234 = MaxVal)*ROW(D183:D234)), COLUMN(C182)))
  3. 您可以确定标签之间的相对位置,并使用INDEX和行号来检索值。 INDEX(C183:C234,MAX((D183:AI234 = MaxVal)*ROW(D183:D234)), COLUMN(C182)) - ROW(C182))

请注意,这些都是数组函数,必须使用CTRL + SHIFT + ENTER输入。

我更喜欢INDEX方法,因为它是非易失性的(OFFSETINDIRECT都是易失性函数,并且每次更改工作表/ 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)

© www.soinside.com 2019 - 2024. All rights reserved.