excel 获取二维数组中具有值的单元格的第一个地址

w8f9ii69  于 2023-04-22  发布在  其他
关注(0)|答案(3)|浏览(158)

我在Excel上有一个2D数组,其中的值可能是重复的。
在另一个单元格上我有一个值。现在我想得到我的二维数组的第一个单元格的地址,它有相同的值。第一个单元格我的意思是第一个在读取的基础上,从左到右,从上到下。
如果只有不同的值,我可以这样做

=SUMPRODUCT((AF26:AK30=W35)*ROW(AF26:AK30))

=SUMPRODUCT((AF26:AK30=W35)*COLUMN(AF26:AK30))

第一个公式用于行,第二个公式用于列。
但它对重复值不起作用。你知道我该怎么做吗?

8hhllhi2

8hhllhi21#

备选方案:

=LET(
    ζ,AF26:AK30,
    @TOCOL(IF(ζ=W35,ADDRESS(ROW(ζ),COLUMN(ζ)),NA()),2)
)
mzillmmw

mzillmmw2#

第一个匹配的地址(ByRows)

=LET(d,AF26:AK30,v,W35,
    c,COLUMNS(d),
    m,XMATCH(v,TOCOL(d)),
    ar,INDEX(ROW(d),INT((m-1)/c)+1),
    ac,INDEX(COLUMN(d),,MOD(m-1,c)+1),
IFERROR(ADDRESS(ar,ac),""))
d - the range
v - the lookup value
c - the number of columns
m - the row index of the match in the 'TOCOL' column
ar - the matching worksheet row
ac - the matching worksheet column
ROW(d) - a vertical array of all the range (worksheet) rows
COLUMN(d) - a horizontal array of all the range (worksheet) columns
rqenqsqc

rqenqsqc3#

这将范围放入一列,然后MATCH返回它在该列中的位置。然后使用INT和MOD找到行和列。

=LET(
    rng,AF26:AK30,
    pos,MATCH(W35,TOCOL(rng), 0)-1,
    clm,COLUMNS(rng),
    ADDRESS(INT(pos/clm)+MIN(ROW(rng)),MOD(pos,clm)+MIN(COLUMN(rng))))

相关问题