将层次可折叠分组数据缩进Excel中的列?

时间:2019-06-18 07:11:11

标签: excel vba

我正在尝试将分层可折叠数据更改为excel中的列?有没有快速的方法?

我已经尝试过将文本用于列,但是我认为这不是正确的方法。

enter image description here

上一个数据

Data Previous

之后的数据

Data After

+------------+-------+--------+
|    Item    | Level | Parent |
+------------+-------+--------+
| P1         |     1 | N/A    |
|     P2     |     2 | P1     |
|     P3     |     2 | P1     |
|         P4 |     3 | P3     |
|     P5     |     2 | P1     |
|         P6 |     3 | P5     |
+------------+-------+--------+

将层次缩进到列中。我已经尝试过修剪功能来计数前导空格,如果我知道计数可以简单地过滤并将粘贴数据复制到相应的列中,但是我无法以某种方式计数。

1 个答案:

答案 0 :(得分:0)

解决方案1:使用简单的VBA代码返回缩进

Function PROFEXIndentLevel(Cell As Range)
    'This function returns the indentation of a cell content

    Application.Volatile
    'With "Application.Volatile" you can make sure, that the function will be recalculated once the worksheet is recalculated
    'for example, when you press F9 (Windows) or press enter in a cell

    PROFEXIndentLevel = Cell.IndentLevel
    'Return the IndentLevel

End Function

将此代码复制并粘贴到新的VBA模块中。因此(照常)转到“开发人员”功能区。然后单击“编辑器”,右键单击“ Microsoft Excel对象”。插入一个新模块。将代码粘贴到此模块中。

接下来,您只需要输入公式=PROFEXIndentLevel。例如在单元格C3中:

=PROFEXIndentLevel(A3)

在此示例中,您将获得2作为回报。

请注意,如果在大量单元格上使用此公式,则可能会降低工作簿的性能。