如何在Google表格中简化链接的LOOKUP集?

时间:2016-05-03 19:16:01

标签: excel google-sheets spreadsheet

目前,我有一张工作表,其中每行有大约20个单元格,我使用LOOKUP进行评估。如果行不是空的,我从参考行中获取一个值。如果它为空,我将0指定为其值,以避免返回#N / A.

一旦我评估了20行中的每一行,我想然后对所有行进行SUM。虽然我有一个有效的公式,但它很可怕:

=SUM(IFERROR(LOOKUP("X",H2,H91),0) + IFERROR(LOOKUP("X",I2,I91),0)
+ IFERROR(LOOKUP("X",J2,J91),0) + IFERROR(LOOKUP("X",K2,K91),0)
+ IFERROR(LOOKUP("X",L2,L91),0) + IFERROR(LOOKUP("X",M2,M91),0)
+ IFERROR(LOOKUP("X",N2,N91),0) + IFERROR(LOOKUP("X",O2,O91),0)
+ IFERROR(LOOKUP("X",P2,P91),0) + IFERROR(LOOKUP("X",Q2,Q91),0)
+ IFERROR(LOOKUP("X",R2,R91),0) + IFERROR(LOOKUP("X",S2,S91),0)
+ IFERROR(LOOKUP("X",T2,T91),0) + IFERROR(LOOKUP("X",U2,U91),0)
+ IFERROR(LOOKUP("X",V2,V91),0) + IFERROR(LOOKUP("X",W2,W91),0)
+ IFERROR(LOOKUP("X",X2,X91),0) + IFERROR(LOOKUP("X",Y2,Y91),0)
+ IFERROR(LOOKUP("X",Z2,Z91),0) + IFERROR(LOOKUP("X",AA2,AA91),0)
+ IFERROR(LOOKUP("X",AB2,AB91),0))

完整的示例是here

参见公式Y2到Y87的单元格。

我知道必须有更优雅的方式来做到这一点,但是,我的Google Sheet技巧充其量只是新手。

提前感谢任何建议!

1 个答案:

答案 0 :(得分:0)

您可以使用SUMPRODUCT:

$myArray = [
'images' => ['g','hp'],
'g' => ['menu','submenu','icons'],
'hp' => ['cat', 'icons', 'banners'],
'menu' => ['v1',],
'submenu' => ['img','icons'],
'icons' => ['v1'],
'cat' => ['kt','hk','bm','w','m','at','e'],
'banners' => ['v1'],
'img' => ['e'],
'kt' => ['v1',],
'hk' => ['v1',],
'bm' => ['v1',],
'w' => ['v1',],
'm' => ['v1',],
'at' => ['v1',],
'e' => ['v1',],
];


function getPath($array, $key, $path, &$returnArray) {
    if(isset($array[$key]))
    {
        foreach($array[$key] as $v) {
            $newPath = $path.$v.'/';

            $nextPath = getPath($array, $v, $newPath, $returnArray);
            if(!empty($nextPath))
            {
                $returnArray[] = $nextPath;
            }
        }
    } else {
        return $path;
    }
}

$allPaths = array();

getPath($myArray, 'images', '', $allPaths);

echo "<pre>";print_r($allPaths);echo "</pre>";

或者说更简单的SUMIF()

Array
(
    [0] => g/menu/v1/
    [1] => g/submenu/img/e/v1/
    [2] => g/submenu/icons/v1/
    [3] => g/icons/v1/
    [4] => hp/cat/kt/v1/
    [5] => hp/cat/hk/v1/
    [6] => hp/cat/bm/v1/
    [7] => hp/cat/w/v1/
    [8] => hp/cat/m/v1/
    [9] => hp/cat/at/v1/
    [10] => hp/cat/e/v1/
    [11] => hp/icons/v1/
    [12] => hp/banners/v1/
)