从与Excel中的另一个数字匹配的行中获取大于数字的下一个数字

时间:2017-04-24 14:33:54

标签: excel excel-formula

所以我在Excel中有这个表

import java.io.{ByteArrayOutputStream, InputStream, OutputStream}
import com.amazonaws.services.lambda.runtime.{Context, RequestStreamHandler}
/**
  * Created by alifirat on 24/04/17.
  */
class IOTConsumer extends RequestStreamHandler {

  val BUFFER_SIZE = 1024 * 4

  override def handleRequest(input: InputStream, output: OutputStream, context: Context): Unit = {
    val bytes = toByteArray(input)
    val logger= context.getLogger
    logger.log("Receive following thing :"  + new String(bytes))
    output.write(bytes)
  }

   /**
     * Reads and returns the rest of the given input stream as a byte array.
     * Caller is responsible for closing the given input stream.
     */
   def toByteArray(is : InputStream) : Array[Byte] = {
     val output = new ByteArrayOutputStream()
     try {
       val b = new Array[Byte](BUFFER_SIZE);
       var n = 0
       var flag = true
       while(flag) {
         n = is.read(b)
         if(n == -1) flag = false
         else {
           output.write(b, 0, n)
         }
       }
       output.toByteArray();
     } finally {
       output.close();
       Array[Byte]()
     }
   }
}

我希望能够从A列输入一个字符(或数字)和一个数字,并且有一个公式可以输出下一个数字,该数字等于或大于与输入字符匹配的行中的输入数字。

示例:在表格中,输入字符Y和数字5应该为9,这是第2行中大于5的下一个数字。

我一直试图找到索引和匹配的组合但是还没有能够让它发挥作用。我猜它应该看起来像这样:

    A  B  C  D  E  F
  __________________
1 | X  1  5 10     Y
2 | Y  2  4  9     5
3 | Z  3  7  8

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

=AGGREGATE(15,6,$B$1:$D$3/(($A$1:$A$3=F1)*($B$1:$D$3>=F2)), 1) 'Ctrl+Shift+Enter

enter image description here

答案 1 :(得分:1)

这里有一个纯粹的INDEX / MATCH版本,它在整个列上仍然很快

=IFERROR(IF(F2<INDEX(B:D,MATCH(F1,A:A,0),1),INDEX(B:D,MATCH(F1,A:A,0),1),IF(INDEX(INDEX(B:D,MATCH(F1,A:A,0),0),MATCH(F2,INDEX(B:D,MATCH(F1,A:A,0),0)))=F2,INDEX(INDEX(B:D,MATCH(F1,A:A,0),0),MATCH(F2,INDEX(B:D,MATCH(F1,A:A,0),0))),INDEX(INDEX(B:D,MATCH(F1,A:A,0),0),MATCH(F2,INDEX(B:D,MATCH(F1,A:A,0),0))+1))),"No match")

方法

(1)找到并从B:D中提取匹配的行。

(2)如果F2小于行的第一个元素,则将结果设置为等于第一个元素。

(3)使用MATCH的非精确形式,找出小于或等于F2的最后一个值(即示例中的4)。

(4)如果这等于F2,则将其作为结果

(5)如果不是,则给出下一个值作为结果(即示例中为9)。

如果F2大于行的最后一个元素,它将给出&#34;不匹配&#34;。