Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何从二维数据表中提取相应的列和行图形?_Vba_Excel_Excel Formula - Fatal编程技术网

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标签中的值:

  • 您可以从表的左上角(假定为 C182)<代码>偏移量(C182,最大值((D183:AI234=MaxVal)*行(D183:D234))-行(C182,0)
  • 您可以使用标签的
    间接
    地址
    、行号和列标识符访问带标签的单元格<代码>间接(地址(最大值((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列的技术来获得所需的值