如果没有VBA的列的单元格中有值,则将列标题显示为行

时间:2013-02-25 20:53:57

标签: excel

更新1:

因为我的问题不明确,所以我发布第二个例子

Example 2

因为第2行,所以在第04项中有值1,因此获取项目名称=项目04.它是随机的并且具有大量列(500)。

问题:

如果对该标题下的单元格有任何值输入,我想有办法获取列标题。请注意,如果在第2行和第1列有值,则第2行的其他单元格将不具有任何值(除了0)。

很难用文字解释这个问题所以我创造了一个例子。

Sample

4 个答案:

答案 0 :(得分:7)

我在上面的评论中发布了一个公式,你可能没有看过它。就是这样:

=IF(COUNTA($B2:$D2)=0,"",INDEX($B$1:$D$1,MATCH(TRUE,INDEX($B2:$D2<>"",0),0)))

将获得填充单元格的第一个实例的标题 - 如果您有数值并且想要忽略零,则更改为

=IF(COUNTA($B2:$D2)=0,"",INDEX($B$1:$D$1,MATCH(TRUE,INDEX($B2:$D2>0,0),0)))

无论哪种方式,公式都可以扩展到您需要的范围

.....如果你有500列你可以使用IFERROR缩短一点

=IFERROR(INDEX($B$1:$D$1,MATCH(TRUE,INDEX($B2:$D2>0,0),0)),"")

答案 1 :(得分:1)

对于一个特定的表,它是具有可计数列数的相对小表(即3),试试这个

=IF(COUNTA(G8)>0,"Column 1",IF(COUNTA(H8)>0,"Column 2",IF(COUNTA(I8)>0,"Column 3",""))).  

我的问题是,如果您的表包含20或100列?

答案 2 :(得分:0)

我认为当你说“列标题”时,你的意思是“行标题”

考虑到第一个单元格(包含文字"Column Header")位于A1,这是您必须在单元格A2中引入的公式:

=IF(B2>0, $B$1, IF(C2>0, $C$1, IF(D2>0, $D$1, "")))

将此公式拖放到您需要的任意数量的行上,它(希望)可以达到您想要的效果。

答案 3 :(得分:0)

假设您需要一个包含3个以上列的解决方案,此公式将返回正确的标题。

我假设您的数据从第2行B列开始 - 第1行包含列标题。

在B1中使用此公式并将其复制:

=IF(COUNTA($B2:$D2)=0,"",INDEX($B$1:$D$1,MATCH(FALSE,INDEX(ISBLANK($B2:$D2),0),0)))

如果您的数据超出D列,只需在公式中更改此内容。