Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Excel formula 用于比较和验证值的电子表格/Excel数组函数_Excel Formula_Google Sheets - Fatal编程技术网

Excel formula 用于比较和验证值的电子表格/Excel数组函数

Excel formula 用于比较和验证值的电子表格/Excel数组函数,excel-formula,google-sheets,Excel Formula,Google Sheets,我得到了这个数据集 ID fruit price 1 apple 10 2 apple 50 3 apple 100 4 banana 10 5 banana 20 6 banana 50 我想要一套forumla,它可以遍历每一行并输出每一行中价格最高的水果 在PHP中,我会这样做 foreach $array as $row{ if in_array( $row[fruit] ){ /* check if current $row

我得到了这个数据集

ID  fruit   price
1   apple   10
2   apple   50
3   apple   100
4   banana  10
5   banana  20
6   banana  50
我想要一套forumla,它可以遍历每一行并输出每一行中价格最高的水果

在PHP中,我会这样做

foreach $array as $row{
  if in_array( $row[fruit] ){
    /* check if current $row[price] for current $row[fruit] is larger than existing post. If yes replace */
  }
}

如何在Google电子表格/Excel中实现这一点?

您可以在Excel中使用数组公式实现这一点(因此您可以使用Ctrl+Shift+enter键输入)…
如果您的水果在
B
中,而价格在
C
中,则
D2
中的数组公式将为

=C2=MAX(IF($B$2:$B$7=B2,$C$2:$C$7,0))
这将为您提供
TRUE
FALSE
,了解该行水果的价格是否最高

如果水果数组(第2行到第7行-您可以使其变长)与当前水果相同,则执行
,如果相同,则返回价格,否则返回0。然后我们得到
MAX
,并将其与当前行的价格进行比较


祝你好运

我制作了一个快速的VBA宏,您可以在excel中使用它来输出价格最高的水果

宏将水果表转换为一个数组,然后在数组中循环查找具有最高值的水果,然后将其输出到工作表。此宏依赖于位于A列到C列中的水果表

Sub getMaxPriceFruit()

'put data table into an array
Dim dataTableArray() As Variant
dataTableArray = Range("A2:C" & Cells(Rows.Count, "A").End(xlUp).Row)

'loop through the aray looking for the largest value
'capture array index in variable when largest is found
Dim maxArray(1 To 1, 1 To 3) As Variant
maxArray(1, 1) = 0
maxArray(1, 2) = ""
maxArray(1, 3) = 0

Dim i As Long
For i = 1 To UBound(dataTableArray)

    If dataTableArray(i, 3) > maxArray(1, 3) Then
        maxArray(1, 1) = dataTableArray(i, 1)
        maxArray(1, 2) = dataTableArray(i, 2)
        maxArray(1, 3) = dataTableArray(i, 3)

    End If

Next i


'output the fruit with the max value
Range("F2").Value = maxArray(1, 1)
Range("G2").Value = maxArray(1, 2)
Range("H2").Value = maxArray(1, 3)


End Sub
此脚本的限制是,如果有两个最大值相等的水果,则列表中具有该值的第一个水果将被选为赢家。如果您希望额外的代码输出多个水果,如果它们具有我可以提供的相同的最大值,但简单地说,您可以使用maxArray数组捕获所有排名靠前的水果,然后循环通过此数组一次性输出它们


希望有帮助

一个数据透视表,其中包含
水果
行和
价格
值(汇总方式:MAX)。您的数据集是否按水果和价格的升序排序?我认为答案不错。在所示的特定案例中,数据有序,每个水果都有一个单一的最高价格,您可以将=B2B3放入D2中,但船长的回答更一般。@Joseph为您做了这项工作吗?请随意接受答案!