首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数组中提取几个数据列表,其中结果数据中的每一行引用源数据中的相同单元格。

从数组中提取几个数据列表,其中结果数据中的每一行引用源数据中的相同单元格。
EN

Stack Overflow用户
提问于 2019-01-17 06:39:57
回答 1查看 71关注 0票数 0

我有一个函数,从列中提取日期,从行中提取一个时间,其中名称与该列/行中的单元格匹配。

它提取我想要的数据,但它将数据从最小到最大排序,而不是将跨列的数据匹配到引用的调用。

我发现这是因为我使用的是“小”函数,但是,当我删除“小”部分时,它并不会提取所有的数据。有人有什么建议吗?

这是我的两个公式

代码语言:javascript
复制
=IFERROR(INDEX('MOS Schedule'!$A$5:$A$33,SMALL(IF('MOS Schedule'!$B$5:$F$33=$B$1,ROW('MOS Schedule'!$A$5:$A$33)-MIN(ROW('MOS Schedule'!$A$5:$A$33))+1),ROWS($B$3:D3))),"")


=IFERROR(INDEX('MOS Schedule'!$B$4:$F$4,SMALL(IF('MOS Schedule'!$B$5:$F$33=$B$1,('MOS Schedule'!$B$4:$F$4)-MIN('MOS Schedule'!$B$4:$F$4)+1),ROWS($B$3:C3))),"")

以下是源数据:

下面是由我的公式得出的信息:

这就是问题所在:

它是最小到最大的数据排序,但我需要在结果中将数据排列在一起,并且都引用相同的单元格

我需要eac列C和D中的信息来引用表中相同的单元格。我需要C3和C4 (以及最终的C5 )都引用表中相同的单元格。

我希望在C3中看到的是"1/14/19",在D3 "15:00“中,然后在C4”1/14/19“和D4 "15:30”中。。。等

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-18 04:00:29

使用列G、H和单元格I1:M4作为助手。贴上以下标签:

代码语言:javascript
复制
I4  ---->  1
J4  ---->  2
K4  ---->  3
L4  ---->  4
M4  ---->  5

在E1单元格中插入(键入)第一个日期值(在本例中为14-Jan)。然后,这些公式:

代码语言:javascript
复制
I5  ---->  =IF(COUNTIF('MOS Schedule'!B5:B33,$B$1)=0,"",COUNTIF('MOS Schedule'!B5:B33,$B$1))
I6  ---->  =COUNT($I$5:OFFSET($I$5,0,I4-1))

然后拖到M列,然后在第一行中列出这些公式:

代码语言:javascript
复制
C4  ---->  =INDEX('MOS Schedule'!$B$4:$F$4,MATCH(1,$I$6:$M$6,0))
D4  ---->  =INDEX('MOS Schedule'!$A$5:$A$33,MATCH($B$1,OFFSET('MOS Schedule'!$B$5:$B$33,0,MATCH($C4,'MOS Schedule'!$B$4:$F$4,0)-1),0))
F4  ---->  1
G4  ---->  =COUNTIF('MOS Schedule'!B5:F33,B1)

然后:

代码语言:javascript
复制
C5  ---->  =IF(OR(G4=1,G4=""),"",INDEX('MOS Schedule'!$B$4:$F$4,MATCH(F4,$I$6:$M$6,0)))
D5  ---->  =IF(OR(G4=1,G4=""),"",IFERROR(INDEX(OFFSET('MOS Schedule'!$A$5:$A$33,MATCH(D4,'MOS Schedule'!$A$5:$A$33,0),0,ROWS('MOS Schedule'!$A$5:$A$33)-MATCH(D4,'MOS Schedule'!$A$5:$A$33,0)+1),MATCH($B$1,OFFSET('MOS Schedule'!$B$5:$B$33,MATCH(D4,'MOS Schedule'!$A$5:$A$33,0),MATCH($C5,'MOS Schedule'!$B$4:$F$4,0)-1,ROWS('MOS Schedule'!$A$5:$A$33)-MATCH(D4,'MOS Schedule'!$A$5:$A$33,0)+1),0)),INDEX('MOS Schedule'!$A$5:$A$33,MATCH($B$1,OFFSET('MOS Schedule'!$B$5:$B$33,0,MATCH($C5,'MOS Schedule'!$B$4:$F$4,0)-1),0))))
F5  ---->  =IF(OR(G4=1,G4=""),"",IFERROR(IF(MATCH($B$1,OFFSET('MOS Schedule'!$B$5:$B$33,MATCH(D5,'MOS Schedule'!$A$5:$A$33,0),MATCH(C5,'MOS Schedule'!$B$4:$F$4)-1,ROWS('MOS Schedule'!$A$5:$A$33)-MATCH(D5,'MOS Schedule'!$A$5:$A$33,0)+1),0)>0,F4,""),F4+1))
G5  ---->  =IF(G4="","",IF((G4-1)>0,G4-1,""))

往下拖..。好了。

想法:

  • "I4:M6“作为”日期标识符表(哪一天有匹配结果)“和”指南“列偏移量。
  • 使用偏移量()+match()来“升级”(查找2,3)。(匹配在同一天) index()+ match ()函数(列C,D)。
  • 使用countif (G4)作为基本结果计数器。

希望能帮上忙。(:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54230326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档