excel 如何开始将工作表转换为列表?

xe55xuns  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(151)

这是这样的工作表:
| B柱|色谱柱C| D列| Column D |
| --|--|--| ------------ |
| | SAM| PETER | SAM |
| 1| 1|||
| ||||
| 1||1| 1 |
我想转换成这样:
| B柱| Column B |
| --| ------------ |
| 玛丽| MARY |
| 彼得| PETER |
| 玛丽| MARY |
| SAM| SAM |
我正在使用Office 365并尝试

=FILTER(A2:D5,B2:B5=1)

公式,但它不是我所期望的。
哪种修复方法更有效、更易于应用?

q9rjltbz

q9rjltbz1#

您可以使用TOCOL()和HSTACK()来尝试类似的操作

·单元格A6中使用的公式

=HSTACK(
        TOCOL(REPT(A2:A4,IF(B2:D4<>1,NA(),1)),3),
        TOCOL(REPT(B1:D1,IF(B2:D4<>1,NA(),1)),3)
        )

·单元格A6中使用的公式

=HSTACK(
        TOCOL(IF(B2:D4="",NA(),A2:A4),3),
        TOCOL(IF(B2:D4="",NA(),B1:D1),3)
        )

或者,使用LET()将其分解为多个部分

=LET(
     a,IF(B2:D4="",NA(),1),
     b,TOCOL(REPT(A2:A4,a),3),
     c,TOCOL(REPT(B1:D1,a),3),
     HSTACK(b,c)
     )

下面的屏幕截图是一个示例,不一定必须是单元格B2:D4中的1

或者,把整个数据和解剖它。

=LET(
     _data,A1:D4,
     _name,DROP(INDEX(_data,1,),,1),
     _fruits,DROP(INDEX(_data,,1),1),
     _body,DROP(_data,1,1),
     _errorCheck,IF(_body<>"",1,NA()),
     _unfruits,TOCOL(REPT(_fruits,_errorCheck),3),
     _unname,TOCOL(REPT(_name,_errorCheck),3),
     HSTACK(_unfruits,_unname))
5jdjgkvh

5jdjgkvh2#

下面是另一种应用HSTACK/TOCOl的方法:

=LET(A,A2:A4,in,B2:D4,h,B1:D1,
  HSTACK(TOCOL(IF(in<>"",A,NA()),2),TOCOL(IF(in<>"",h,NA()),2)))

第一个IF按列搜索非空值,第二个IF按行搜索。然后使用TOCOL删除NA()值(2第二个输入参数)。最后,通过HSTACK水平堆叠每个结果。

相关问题