如何在Excel中找到最大查找值

时间:2018-12-03 15:58:28

标签: excel excel-formula vlookup

我有一个像这样的excel表

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where

import qualified Data.Aeson as J
import qualified Data.ByteString as B
import qualified Data.ByteString.Base64 as B64
import qualified Data.Text as T
import qualified Data.Text.Encoding as E
import qualified GHC.Generics as G

data Data = Data
  { number :: Int
  , bytestring :: B.ByteString
  } deriving (G.Generic, Show)

instance J.ToJSON Data where
  toEncoding = J.genericToEncoding J.defaultOptions

instance J.FromJSON Data

instance J.FromJSON B.ByteString where
  parseJSON = undefined

instance J.ToJSON B.ByteString where
  toJSON = undefined

byteStringToText :: B.ByteString -> T.Text
byteStringToText = E.decodeUtf8 . B64.encode

textToByteString :: T.Text -> B.ByteString
textToByteString txt =
  case B64.decode . E.encodeUtf8 $ txt of
    Left err -> error err
    Right bs -> bs

encodeDecode :: Data -> Maybe Data
encodeDecode = J.decode . J.encode

main :: IO ()
main = print $ encodeDecode $ Data 1 "A bytestring"

我有一个表,其中包含与第1列至第3列中的条目相对应的值-

Row    Column1    Column2    Column3
R1     A          B          C 
R2     C          D          X

我想要创建一个Key Value A 1 B 7 C 2 D 4 X 9 ,该列的最大查找值是第1到第3列,即结果看起来像这样-

Column4

我尝试编写这样的数组公式- Row Column1 Column2 Column3 Looked_Up_Max R1 A B C 7 R2 C D X 9

但是它不起作用。要做到这一点的任何方法都是一个步骤,而不是说用查找的值创建三个附加列,然后再取最大的附加列?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

如果对查找表上的数据进行了排序,则可以使用以下数组公式:

=MAX(LOOKUP(B2:D2,$H$2:$H$5,$I$2:$I$5))

作为数组,退出编辑模式时需要使用Ctrl-Shift-Enter而不是Enter进行确认。

enter image description here


另一个不关心使用SUMIFS()的排序顺序

=MAX(SUMIFS(I:I,H:H,B2:D2))

仍然是一个数组公式,但这假定查找中的Key是唯一的。

enter image description here


如果顺序不对且不是唯一的,并且用户想要第一个,那么我们需要这个复杂的数组公式:

=MAX(IFERROR(INDEX(I:I,N(IF({1},MATCH(B2:D2,H:H,0)))),-1E+99))

静态和数组公式。

enter image description here