【问题标题】:Transform Excel table into list skipping blank values将 Excel 表格转换为跳过空白值的列表
【发布时间】:2015-04-28 20:19:21
【问题描述】:

很遗憾,我没有在网上找到解决方案 - 希望有人可以帮助我解决以下问题:

我的输入是一个如下的excel表格:

|         |   Jan   |  Feb    |  Mar    |  Apr    | 
| Topic 1 |   yes   |         |  yes    |         | 
| Topic 2 |         |  yes    |         |         | 
| Topic 3 |   yes   |         |         |  yes    | 
| Topic 4 |         |         |         |  yes    | 

我想要的 输出 是一个列表,其中所有空白元素都被消除了。它应该是这样的:

|         |   Jan   |  Feb    |  Mar    |  Apr    | 
|         | Topic 1 | Topic 2 | Topic 1 | Topic 3 | 
|         | Topic 3 |         |         | Topic 4 | 

任何人有一个聪明的想法如何做到这一点?我想了一秒钟关于数据透视表的事,但没能做到。

PS:我可以轻松处理将输入表中的yes 替换为相应的Topic * 的中间步骤,但我无法执行跳过空白的第二步。

【问题讨论】:

    标签: excel list filter transform


    【解决方案1】:

    对于公式解决方案,假设您的数据在 A1:E5 中,首先将月份复制到新的水平范围中,然后在Jan 下方的单元格中,输入以下公式作为 array-formula 按住ctrl+shift 同时点击enter。 (如果您正确执行此操作,Excel 将在公式栏中的公式周围放置大括号 {...}

    =IFERROR(INDEX($A$1:$A$5,SMALL((B$2:B$5="yes")*ROW($A$2:$A$5),ROWS($1:1)+COUNTBLANK(B$2:B$5))),"")
    

    适当调整单元格引用,但保持公式中显示的寻址方式。

    然后向下向右拖动。

    【讨论】:

    • 谢谢罗恩!正是我需要的!
    • 如果你能解释一下这个等式是如何工作的,那就太好了。我不知道这个小功能如何解决这个问题哈哈。
    • @steventaitinger 我认为如果您使用 Excel 的 Evaluate Formula 工具会有所帮助。 SMALL 函数 k 参数在由 COUNTBLANK 函数调整时,将根据公式在结果表中的位置返回适当的非空行号。
    【解决方案2】:

    如果我们开始:

    我们可以先替换“是”。然后删除空白。然后清除第一列。我们运行宏 MAIN

    Sub MAIN()
        Call step1
        Call step2
        Call step3
    End Sub
    
    Sub step1()
        For Each r In ActiveSheet.UsedRange
            If r.Value = "yes" Then
                r.Value = Cells(r.Row, 1).Value
            End If
        Next r
    End Sub
    
    Sub step2()
        Dim r As Range
        Set r = ActiveSheet.UsedRange.Cells.SpecialCells(xlCellTypeBlanks)
        r.Delete (xlShiftUp)
    End Sub
    
    Sub step3()
        Range("A:A").Clear
    End Sub
    

    生产:

    【讨论】:

    • 感谢宏解决方案 - 我真的很喜欢它并且效果很好!
    【解决方案3】:

    选择适当的范围,开始>编辑,查找和选择,转到特殊...,空白,选择选定的一个,删除...,向上移动单元格,确定。

    【讨论】:

      猜你喜欢
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 2017-10-01
      • 2017-06-20
      相关资源
      最近更新 更多