繁体   English   中英

Excel公式可识别列中的最新非空白单元格

[英]Excel formula to identify the most recent non blank cell in a column

我有一份约会计划电子健康记录的摘录,尽管该记录可以在Excel中读取,但无法轻松地对数据进行排序或解释。 我已经成功地将许多数据收集到一个用逗号分隔的字段中(然后我将使用文本对各列进行分隔)。 我现在在两个单独的列中有信息。 A列-提供商名称和服务日期B列-所有其他必要信息

问题-列a和列b不匹配。 例如,A2具有提供者名称和服务日期,但是相应的其他详细信息位于b8上。 也不总是一对一的匹配(A列中的条目少于B列。

我想要的-在以上各列中,我需要将A2链接到B8(在上面的示例中)。 如果在b列中每个a中有多个条目,我总是希望b列中的最新非空白值与B匹配

我已经尝试过索引,查找,匹配,但没有任何工作正常。 向我指出正确方向的任何帮助都会有所帮助。

假设A和B列中的数据以相同的顺序排列(意味着A列中的第N个条目是B列中的第N个条目,尽管有空格),并且单元格B2到B7为空,这听起来像是我您需要删除空白单元格。

重要提示:在执行任何操作之前,请确保您正在使用数据副本进行操作。 我不想对您永久丢失任何东西负责...

尝试选择整个数据集(A和B列中的所有内容),然后在Excel 2016中转到“查找和选择”>“转到特殊项”(Alt + H,FD,S)。在早期版本中可能类似。

在该屏幕中,有一个选项可以选择空白。 这样做,然后回到工作表中,只需删除选定的单元格(ctrl +-),然后告诉Excel将剩余的单元格上移。 您现在在A和B列中对应的数据应该在同一行上对齐,对吗?

根据您的描述并假设您的数据布局为:

    (A)      |    (B)
(1)          |
(2) AAA 111  |
(3)          |
(6)          |  Something
(7) BBB 222  |
(8)          |
(11)         |  Something more
(12) CCC 333 |
(13)         |
(16)         |  Something Else

请注意行号跳

在C2中,使用以下命令:

=OFFSET($A$2,(ROW(A2)-2)*5,0,1,1)

在D2中使用以下命令

=OFFSET($A$2,(ROW(A2)-2)*5+4,1,1,1)

现在要处理当条目为空白时显示的0,您可以将偏移量函数包装在if语句中

=if(OFFSET($A$2,(ROW(A2)-2)*5+4,1,1,1)=0,"",OFFSET($A$2,(ROW(A2)-2)*5+4,1,1,1))

假设A列中至少有1个条目属于B列,则可以使用它来具有非易失性功能:

D1: {=IFERROR(INDEX(A:A,MATCH(SMALL(IF(B$1:INDEX(B:B,MATCH("zzz",B:B))<>"",ROW(B$1:INDEX(B:B,MATCH("zzz",B:B)))),ROW()),IF(A$1:INDEX(A:A,MATCH("zzz",A:A))<>"",ROW(A$1:INDEX(A:A,MATCH("zzz",A:A)))),1)),"")}
E1: {=IFERROR(INDEX(B:B,SMALL(IF(B$1:INDEX(B:B,MATCH("zzz",B:B))<>"",ROW(B$1:INDEX(B:B,MATCH("zzz",B:B)))),ROW())),"")}

为了避免多次获取列的条目,只需将其用于D2:

D2: {=IFERROR(IF(INDEX(A:A,MATCH(SMALL(IF(B$1:INDEX(B:B,MATCH("zzz",B:B))<>"",ROW(B$1:INDEX(B:B,MATCH("zzz",B:B)))),ROW()),IF(A$1:INDEX(A:A,MATCH("zzz",A:A))<>"",ROW(A$1:INDEX(A:A,MATCH("zzz",A:A)))),1))=INDEX(A:A,MATCH(SMALL(IF(B$1:INDEX(B:B,MATCH("zzz",B:B))<>"",ROW(B$1:INDEX(B:B,MATCH("zzz",B:B)))),ROW()-1),IF(A$1:INDEX(A:A,MATCH("zzz",A:A))<>"",ROW(A$1:INDEX(A:A,MATCH("zzz",A:A)))),1)),"",INDEX(A:A,MATCH(SMALL(IF(B$1:INDEX(B:B,MATCH("zzz",B:B))<>"",ROW(B$1:INDEX(B:B,MATCH("zzz",B:B)))),ROW()),IF(A$1:INDEX(A:A,MATCH("zzz",A:A))<>"",ROW(A$1:INDEX(A:A,MATCH("zzz",A:A)))),1))),"")}

但是请注意:如果A列中的值在B列中没有任何值,那么它将被跳过!

这些都是数组公式,将不带{}输入,但必须通过Strl + Shift + Enter确认

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM