【问题标题】:Excel formula : Grab the column name corresponding to particular cellExcel公式:获取与特定单元格对应的列名
【发布时间】:2023-04-08 22:14:01
【问题描述】:

在上面的 excel 表中,我需要一个公式来提取存在“1”的特定列名,并在相应的单元格中输入该名称。示例-在上面的图像中,对应于 col“Tags”的每一行都包含相应单元格包含“1”的列名。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    对于一个 4 列的示例,您可以使用:

    =SUBSTITUTE(TRIM(IF(A2,$A$1,"")&" "&IF(B2,$B$1,"")&" "&IF(C2,$C$1,"")&" "&IF(D2,$D$1,""))," ",", ")

    对于 7 列,只需按照相同的模式在 TRIM 内添加额外的 IF 语句。

    公式依靠1=TRUE 来保持简短。结果每个IF 后跟一个空格。当没有1 出现时,TRIM 会去掉多余的空格。最后SUBSTITUTE 转换为,,这样你就得到了一个逗号分隔的列表。

    注意:

    TRIM 从文本中去除多余的空格,在单词之间只留下一个空格,并且在文本的开头或结尾处没有空格字符。

    【讨论】:

      【解决方案2】:

      找不到用于连接范围的非 vba 解决方案。所以这是一个UDF

      Function conCatRange(ByVal criteriaRange As range, _
                              ByVal criteria As String, _
                              ByVal conRange As range, _
                              ByVal separator As String) As String
      
          Dim c As range
          conCatRange = ""
      
          For i = 1 To conRange.Columns.Count
              If (criteriaRange(1, i) = criteria) Then
                  conCatRange = conCatRange & conRange(1, i) & separator
              End If
          Next i
      
          conCatRange = Left(conCatRange, Len(conCatRange) - 1)
      End Function
      
      1. criteriaRange = 您要检查 1 的范围,
      2. 标准 = 1(在您的情况下)
      3. conRange = 标题范围
      4. 分隔符 = ","

      如果您想添加摘要和参数说明,请参阅此链接 How to put a tooltip on a user-defined function

      【讨论】:

        【解决方案3】:

        假设您的标题范围是 A-K,

        你能不能从 L2 开始使用这个公式:

        =IF(MID(TRIM(IF(A2=1,A$1,"")&IF(B2=1,", "&B$1,"")&IF(C2=1,", "&C$1," ")&IF(D2=1,", "&D$1,"")&IF(E2=1,", "&E$1,"")&IF(F2=1,", "&F$1,"")&IF(G2 =1,", "&G$1,"")&IF(H2=1,", "&H$1,"")&IF(I2=1,", "&I$1,"")&IF(J2=1,", "&J$1,"")&IF(K2=1,", "&K$1,"")),1,2)=", ",MID(TRIM(IF(A2=1,A$1,"")&IF (B2=1,", "&B$1,"")&IF(C2=1,", "&$C$1,"")&IF(D2=1,", "&D$1,"")&IF(E2= 1,", "&E$1,"")&IF(F2=1,", "&F$1,"")&IF(G2=1,", "&G$1,"")&IF(H2=1,", " &H$1,"")&IF(I2=1,", "&I$1,"")&IF(J2=1,", "&J$1,"")&IF(K2=1,", "&K$1,"" )),3,1000),TRIM(IF(A2=1,A$1,"")&IF(B2=1,", "&B$1,"")&IF(C2=1,", "&C$1," ")&IF(D2=1,", "&D$1,"")&IF(E2=1,", "&E$1,"")&IF(F2=1,", "&F$1,"")&IF(G2 =1,", "&G$1,"")&IF(H2=1,", "&H$1,"")&IF(I2=1,", "&I$1,"")&IF(J2=1,", "&J$1,"")&IF(K2=1,", "&K$1,"")))

        这个公式在 mid 函数的列中限制为 1000 个字符。由于分隔符,它重复了 3 次相同的公式:“,”但如果您不介意结果格式,您可以将其缩短为 1。只需在列中填入put 1,就会出现列名。

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-26
          • 2021-11-22
          相关资源
          最近更新 更多