excel 在2D数组的每一行中,匹配一个值,以生成匹配发生的列位置的列表

wbrvyc0a  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(121)

在(N行x M列)数组中的每一行中,对标量值进行匹配,以产生发生匹配的列位置的(N行x 1列)列表(即在1和M之间)
我需要找到每一行中第一个出现的0,并生成一个列表,例如。

2   0
4   0
6   0
8   0
10  0
0   0

它应该产生

2
2
2
2
2
1

并用于:

250 250 0
500 0   0
750 250 0
0   0   0

它应该产生

3
2
3
1

因为我需要将其 Package 到LAMBDA中,所以我不能使用ROW(),因为它引用当前工作表中的位置,并且我也不能使用辅助列/行。
这是一个更大的问题中的一个小问题,我被卡住了。如果你认为这是一个X-Y问题,并且有更好的方法来解决更大的问题,那么就会提供上下文。话虽如此,能够解决这个特定的问题(我使用MATCH)将是有用的,因为它可能可以推广到MAXMINSUM等。

上下文

我想做的是,根据需要,在一个公式中,基于2的“步长”,{12,2}的选项和12的max生成一个序列。

2
2
2
2
2
12

它需要推广到其他输入,例如{1000,500,250},max是1000,step是250的选项:

250
500
250
1000

旁注:每个选项都可以被精确地整除为较小的选项,即250可以被250整除,500可以被500和250整除,1000可以被1000和500和250整除,并且目的是获取该集合中的最大值。
(我可以很容易地将其 Package 成LAMBDA

探索

现在我可以很容易地生成一个数组,如使用SEQUENCE(1000/250,,250,250)

250
500
750
1000

或使用SEQUENCE(12/2,,2,2)

2
4
6
8
10
12

我知道MOD(this, option) == 0

with
SWITCH(0,
  MOD(this,12),12,
  MOD(this,2),2
)
2 => 2
4 => 2
6 => 2
8 => 2
10 => 2
12 => 12

with
SWITCH(0,
  MOD(this,1000),1000,
  MOD(this,500),500,
  MOD(this,250),250,
)
250 => 250
500 => 500
750 => 250
1000 => 1000

创意

我的想法是生成一个动态的二维数组,其中每个生成的数字都有一行,每个选项都有一列,并对它们进行mod,例如,使用MOD(SEQUENCE(12/2,,2,2),{12,2})

2   0
4   0
6   0
8   0
10  0
0   0

或使用MOD(SEQUENCE(1000/250,,250,250),{1000,500,250})

250 250 0
500 0   0
750 250 0
0   0   0

倒数第二步,我必须做的是获取每行第一列0的位置,并使用INDEX(options, position)获取实际选项。

最后一步是采取这些位置,并使用INDEX({12,2},{2,2,2,2,2,1})INDEX({1000,500,250},{3,2,3,1})查看原始选项(技术上它们是水平的,但我可以TRANSPOSE

卡住了

我在倒数第二步卡住了。我如何获得每行中第一个0值的列位置?
我尝试使用MATCH,但它不做我想要的;它似乎只产生一个值。
倒数第二步的公式应该会得到一个6x 1的数组,这样我就可以在最后一步中使用它:

2 // position 2 of {12,2} == 2
2 // position 2 of {12,2} == 2
2 // position 2 of {12,2} == 2
2 // position 2 of {12,2} == 2
2 // position 2 of {12,2} == 2
1 // position 1 of {12,2} == 12

3 // position 3 of {1000,500,250} == 250
2 // position 2 of {1000,500,250} == 500
3 // position 3 of {1000,500,250} == 250
1 // position 1 of {1000,500,250} == 1000
efzxgjgh

efzxgjgh1#

试试看:

=BYROW(A1:C4,LAMBDA(x,XMATCH(0,x)))

似乎返回您想要的结果
或者甚至:

=BYROW(1:6,LAMBDA(x,XMATCH(0,x)))

相关问题