Excel - 如果列不包含TRUE,则返回所有列标题

时间:2017-12-20 20:58:25

标签: excel

我想返回数百列的所有列标题,其中“TRUE”不在其中 - 意味着只有“FALSE”值的列。有人可以帮忙推荐一种简单的方法吗?我尝试了各种方法,但发现它们仍然是非常手动的。

enter image description here

我对VBA不熟悉 - 只是尝试使用Pivots和一些VLOOKUP和HLOOKUPS,并没有接近我想要的解决方案。

2 个答案:

答案 0 :(得分:1)

这是一个解决方案。

1)在数据上方插入一行。如果需要,您可以稍后隐藏。或者,您可以在另一个选项卡的相应列中编写此公式(请参阅步骤5)。

2)单元格A1公式= =IF(ISNA(MATCH(TRUE,A3:A5000,0)),1,0)

3)单元格B1公式= =IF(ISNA(MATCH(TRUE,B3:B5000,0)),MAX($A$1:A1)+1,0)

4)根据需要拖动多列,并根据需要调整5000行数

enter image description here

5)在A1的另一个标签上写下公式:=IFERROR(HLOOKUP(ROW(),data!$1:$2,2,0),"")其中数据是包含数据的表格。

6)根据需要向下拖动多行。

enter image description here

答案 1 :(得分:1)

假设您希望在单行中匹配的标头,并假设您希望每个单元格匹配一个标头:

  1. 在现有标题行上方添加三行。
  2. 在单元格A3中,输入公式

    =AND(A5:A####)

    并将其复制到所有使用的列中。 (将####替换为最后一行#。)

  3. 在单元格A2中,放置数组公式

    =INDEX($A$4:$E$4,SMALL(IF($A$3:$E$3,COLUMN($A$3:$E$3)),COLUMN(A:A)))

    (输入,按Ctrl-Shift-Enter。) 将E替换为最后使用的列。 将其复制到所有使用的列中。

  4. 在单元格A1中,输入公式

    =IFERROR(A2,"")

    并将其复制到所有使用的列中。

  5. 您应该看到第1行中的所有有效标题后跟空白单元格。

    我将公式分成两行(1,2),因此您不必在INDEX中重复IF次表达式,但您可以将它们合并。

    这是一个不需要数组公式的替代方案:

    1. 在现有标题行上方添加三行。
    2. 在单元格A3中,输入公式

      =IF(AND(A5:A####),1)

      将####替换为最后一行#。

    3. 在单元格B3中,输入公式

      =IF(AND(B5:B####),COUNTIF($A$3:A3,"<>FALSE")+1)

      将####替换为最后一行#。将其复制到所有剩余的已使用列。

    4. 在单元格A2中,输入公式

      =HLOOKUP(COLUMN(A:A),$A$3:$E$4,2,FALSE)

      将其复制到所有已使用的列。

    5. 在单元格A1中,输入公式

      =IFNA(A2,"")

      并将其复制到所有已使用的列。