Vba 如何从二维数据表中提取相应的列和行图形?
偷看 我目前有一个二维数据表,它测量两个输入对利润的敏感性 整个数据表是(Vba 如何从二维数据表中提取相应的列和行图形?,vba,excel,excel-formula,Vba,Excel,Excel Formula,偷看 我目前有一个二维数据表,它测量两个输入对利润的敏感性 整个数据表是(D183:AI234)。我从一个max()值中获得最大利润,我想知道我可以创建什么公式,这样我可以在数据表(其中两个)中获得相应的值,这些值创建了由整个数据表中的max()判断的利润 我尝试过的方法:hlookup,vlookup从行和列中获取输入,但从行和列中获取N/A 例如,为了从行中获取输入,基于查找值,我使用了以下公式:=HLOOKUP(E237,D183:AI234,1,0) 问候 数据表: 这里有一种使用数组函
D183:AI234
)。我从一个max()
值中获得最大利润,我想知道我可以创建什么公式,这样我可以在数据表(其中两个)中获得相应的值,这些值创建了由整个数据表中的max()
判断的利润
我尝试过的方法:hlookup
,vlookup
从行和列中获取输入,但从行和列中获取N/A
例如,为了从行中获取输入,基于查找
值,我使用了以下公式:=HLOOKUP(E237,D183:AI234,1,0)
问候
数据表:
这里有一种使用数组函数的简单方法。我想有更干净的东西 编辑我误解了原来的问题 我假设数据本身在D183:AI234的范围内——y类别的标签在C183:C234中,x类别的标签在D182:AI182中 要查找最大值的行:
MAX((D183:AI234=MaxVal)*行(D183:D234))
对于行号,有多种选项可用于实际访问y标签中的值:
间接
和地址
、行号和列标识符访问带标签的单元格<代码>间接(地址(最大值((D183:AI234=MaxVal)*行(D183:D234)),列(C182))索引
和行号检索值<代码>索引(C183:C234,最大值((D183:AI234=MaxVal)*行(D183:D234)),列(C182))-行(C182))CTRL+SHIFT+ENTER
输入
我更喜欢<代码>索引>代码>方法,因为它是非易失性的(无论是代码>偏移< /代码>和<代码>间接< /代码>都是不稳定的函数,每当对表/ Excel进行重新计算时,将重新计算,并且我通常认为这是更好的实践。p> 要获得x值,请使用
MAX((D183:AI234=MaxVal)*列(D183:AI183))
标识最大值的列,并调整三种方法中的任何一种
原始答案查找以下最大值(但不是相关类别值)的地址:
要查找最大项的行,您需要将值与最大值匹配的布尔数组(即(D183:AI234=MaxVal)
乘以行号,从而行(D183:D234)
。该乘法的结果是一个向量(0,0,…,最大值的行,…),因此取该向量的MAX
来查找行号
该列也是如此,但您可以使用列(D183:AI183)
。然后,您可以使用address
函数获取单元格地址
把这一切放在一起
=地址(最大值((D183:AI234=MaxVal)*行(D183:D234)),最大值((D183:AI234=MaxVal)*列(D183:AI183))
这必须以数组函数的形式输入(CTRL+SHIFT+ENTER)一张图片值数千美元,令人惊讶的是,我不确定是否有一行excel函数用于此。如果您不想使用VBA,只需在每行和每列的末尾添加一个最大值的
匹配项
,但这似乎非常复杂。应该有一个更优雅的解决方案?嘿,谢谢你发布了一个潜在的解决方案。我得到一个“你键入的公式包含两个方面的错误”是有办法解决这个问题的。RegardsDid是否将工作表中的实际地址替换为“MaxVal”?您是以数组函数的形式输入的吗?我输入的公式是单元格中的公式,我想这是错误的。,,您没有输入{}
-当您使用Ctrl+Shift+enter时,Excel将为您添加该值。这给出了最大值的地址。我想OP需要对应于最大值的X和Y值。您可以使用索引到X行和(分别)Y列的技术来获得所需的值